后台返回pdf的base64编码到前端,前端用pdf.js进行展示,如果pdf中有中文,不会显示问题?

用pdf.js展示,pdf中有中文不显示问题

var pdfData=atob('JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9MZW5ndGggMTY2L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCnicK+RyCuEyNlOwMDBTCEnhcg3hCuQyUvACiRoqGAAhiLQwMVIIyeXSdzNUMDRQCEnj0tAMyQKpRSgxUEjORdZkBDTP3MxQz9gQotNIwcgEpNMALF+UzqXRn9Zr7icVtLCHOf1p0tIQL5CRBgrpWIyNjgXSKWBn4bbQxNhIwdzSSM/EHO5UNAtdEktSrSi1xdKUgC1GBoamuoZGukamRFkFAA+OTv4KZW5kc3RyZWFtCmVuZG9iagoxIDAgb2JqCjw8L0dyb3VwPDwvVHlwZS9Hcm91cC9DUy9EZXZpY2VSR0IvUy9UcmFuc3BhcmVuY3k+Pi9QYXJlbnQgNSAwIFIvQ29udGVudHMgNCAwIFIvVHlwZS9QYWdlL1Jlc291cmNlczw8L1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldL0NvbG9yU3BhY2U8PC9DUy9EZXZpY2VSR0I+Pi9Gb250PDwvRjEgMiAwIFIvRjIgMyAwIFI+Pj4+L01lZGlhQm94WzAgMCA1OTUgODQyXT4+CmVuZG9iago2IDAgb2JqClsxIDAgUi9YWVogMCA4NTIgMF0KZW5kb2JqCjIgMCBvYmoKPDwvQmFzZUZvbnQvSGVsdmV0aWNhL1R5cGUvRm9udC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvU3VidHlwZS9UeXBlMT4+CmVuZG9iago3IDAgb2JqCjw8L0ZvbnRCQm94IFstMjUgLTI1NCAxMDAwIDg4MF0vQ2FwSGVpZ2h0IDg4MC9TdHlsZTw8L1Bhbm9zZSgBBQICBAAAAAAAAAApPj4vVHlwZS9Gb250RGVzY3JpcHRvci9TdGVtViA5My9EZXNjZW50IC0xMjAvRmxhZ3MgNi9Gb250TmFtZS9TVFNvbmctTGlnaHQvQXNjZW50IDg4MC9JdGFsaWNBbmdsZSAwPj4KZW5kb2JqCjggMCBvYmoKPDwvQmFzZUZvbnQvU1RTb25nLUxpZ2h0L0NJRFN5c3RlbUluZm88PC9PcmRlcmluZyhHQjEpL1JlZ2lzdHJ5KEFkb2JlKS9TdXBwbGVtZW50IDQ+Pi9UeXBlL0ZvbnQvU3VidHlwZS9DSURGb250VHlwZTAvRm9udERlc2NyaXB0b3IgNyAwIFIvRFcgMTAwMD4+CmVuZG9iagozIDAgb2JqCjw8L0Rlc2NlbmRhbnRGb250c1s4IDAgUl0vQmFzZUZvbnQvU1RTb25nLUxpZ2h0LVVuaUdCLVVDUzItSC9UeXBlL0ZvbnQvRW5jb2RpbmcvVW5pR0ItVUNTMi1IL1N1YnR5cGUvVHlwZTA+PgplbmRvYmoKNSAwIG9iago8PC9JVFhUKDIuMS43KS9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sxIDAgUl0+PgplbmRvYmoKOSAwIG9iago8PC9OYW1lc1soSlJfUEFHRV9BTkNIT1JfMF8xKSA2IDAgUl0+PgplbmRvYmoKMTAgMCBvYmoKPDwvRGVzdHMgOSAwIFI+PgplbmRvYmoKMTEgMCBvYmoKPDwvTmFtZXMgMTAgMCBSL1R5cGUvQ2F0YWxvZy9WaWV3ZXJQcmVmZXJlbmNlczw8L1ByaW50U2NhbGluZy9BcHBEZWZhdWx0Pj4vUGFnZXMgNSAwIFI+PgplbmRvYmoKMTIgMCBvYmoKPDwvQ3JlYXRvcihKYXNwZXJSZXBvcnRzIFwoSW5xdWlyeVJwdFwpKS9Qcm9kdWNlcihpVGV4dCAyLjEuNyBieSAxVDNYVCkvTW9kRGF0ZShEOjIwMTUxMjI1MDkzMTMzKzA4JzAwJykvQ3JlYXRpb25EYXRlKEQ6MjAxNTEyMjUwOTMxMzMrMDgnMDAnKT4+CmVuZG9iagp4cmVmCjAgMTMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMjQ4IDAwMDAwIG4gCjAwMDAwMDA1MjYgMDAwMDAgbiAKMDAwMDAwMDk2OCAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDEwOTIgMDAwMDAgbiAKMDAwMDAwMDQ5MSAwMDAwMCBuIAowMDAwMDAwNjE0IDAwMDAwIG4gCjAwMDAwMDA4MDUgMDAwMDAgbiAKMDAwMDAwMTE1NSAwMDAwMCBuIAowMDAwMDAxMjA5IDAwMDAwIG4gCjAwMDAwMDEyNDIgMDAwMDAgbiAKMDAwMDAwMTM0NyAwMDAwMCBuIAp0cmFpbGVyCjw8L1Jvb3QgMTEgMCBSL0lEIFs8MDhjNzVmZDMwZWE4NjAwY2FkOTQ1NDA2ZDJiYWNmM2U+PDRmOTRlZTdlNTExMTg5Y2I2OWRjMjNiZjI3OWMwZmI4Pl0vSW5mbyAxMiAwIFIvU2l6ZSAxMz4+CnN0YXJ0eHJlZgoxNTA4CiUlRU9GCg==')

  pdfjsLib.GlobalWorkerOptions.workerSrc =
    'https://unpkg.com/pdfjs-dist@2.0.489/build/pdf.worker.min.js';

// pdfjsLib.cMapUrl = './cmaps/';
// pdfjsLib.cMapPacked = true;
  // Opening PDF by passing its binary data as a string. It is still preferable
  // to use Uint8Array, but string or array-like structure will work too.
  pdfjsLib.getDocument({data: pdfData}).then(function getPdfHelloWorld(pdf) {
    // Fetch the first page.
    pdf.getPage(1).then(function getPageHelloWorld(page) {
      var scale = 1.5;
      var viewport = page.getViewport(scale);
      // Prepare canvas using PDF page dimensions.
      var canvas = document.getElementById('the-canvas');
      var context = canvas.getContext('2d');
      canvas.height = viewport.height;
      canvas.width = viewport.width;
      // Render PDF page into canvas context.
      var renderContext = {
        canvasContext: context,
        viewport: viewport
      };
      page.render(renderContext);
    });
  });

在页面中的截图

图片描述

应该是有中文的,但是没显示。

有大牛遇到过这种问题吗?

阅读 12.7k
2 个回答

有可能是有pdf不支持的字体格式,引入pdf.js的字体试试

const CMAP_URL = 'https://unpkg.com/pdfjs-dist@2.0.489/cmaps/';
pdfjsLib.getDocument({
    data: pdfData,
    cMapUrl: CMAP_URL,
    cMapPacked: true,
    })
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题