pdf.js 踩坑日志,使用说明, 中文不能显示, 字体模糊, 签名不能显示

使用版本

2.0.288

外链接引入该版本

<script src='https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.288/build/pdf.min.js'></script>

<script src='https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.288/build/pdf.worker.min.js'>

引入上面的链接后, 全局暴露出来PDFJS这个对象

遇到的问题

中文字体缺失


PDFJS.cMapUrl= 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.288/cmaps/' // include "/"

PDFJS.cMapPacked= true // set cMapPacked = true to ignore Warning: Ignoring invalid character "121" in hex string

字体模糊

改变viewPort, 在后面的演示代码里面调用 getViewport这个方法可以解决字体模糊问题

签名不能加载问题

控制台的报错信息

Warning: Unimplemented widget field type "Sig", falling back to base field type. 问题链接

把pdf.work.js下载下来, 全局搜索下AnnotationFlag.HIDDEN, 找到类型下面的代码, 把那行注释掉, 在替换掉, 相应的script


if(data.fieldType==='Sig') {

    warn('unimplemented annotation type: Widget signature');
    // 注释下面这行代码
    this.setFlags(AnnotationFlag.HIDDEN);

 }

整个演示代码

   // set cMapUrl
    PDFJS.cMapUrl= 'https://cdn.jsdelivr.net/npm/pdfjs/dist@2.0.288/cmaps/' 
    PDFJS.cMapPacked= true 
// Loading a document.

    var loadingTask= PDFJS.getDocument(pdfPath);
    var pageSum= 0, pageCount= 0

     // listen on progress event
    loadingTask.onProgress = (e) => {
    pageCount++
    if (e.loaded=== e.total|| pageCount+ 1  >= pageSum) {
    }

    loadingTask.promise.then(function (pdfDocument) {
        let canvas= ''
        pageSum= pdfDocument.numPages
        let wrapperCanvas= document.getElementById('canvas_wrapper')
        for (let i= 0; i< pdfDocument.numPages; i++) {
            canvas+= `<canvas id="pdf_canvas_${i}">`
        }
        wrapperCanvas.innerHTML= canvas
       for (let i= 0; i< pdfDocument.numPages; i++) {
          pdfDocument.getPage(i+ 1).then(function (pdfPage) {
// Display page on the existing canvas with 100% scale.
                var viewport= pdfPage.getViewport(2.0);
                var canvas= document.getElementById(`pdf_canvas_${i}`);
                canvas.width= viewport.width;
                canvas.height= viewport.height;
                var ctx= canvas.getContext('2d');
               var renderTask= pdfPage.render({
                   canvasContext: ctx,
                  viewport: viewport
               });
              return renderTask.promise;
           });
        }
     }).catch(function (reason) {
      console.error('Error: ' + reason);
    })
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,982评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,858评论 2 59
  • 孩子目前中班,可是从托班起老师们就开始投诉说我家孩子太闹腾自制力太差,老是喜欢故意捣蛋,等升了中班,老师们...
    瑜此一生阅读 331评论 1 1
  • 刻意殷勤事有成,立身何必惜浮名。 百花逢景任开放,万物遇时皆发生。 后路前途两相背,来人去客不同行。 莫辞负重艰难...
    雪窗_武立之阅读 369评论 1 12
  • 猫真的是一种神奇的动物-----这个故事让我们从一只双眼炯炯有神的的野猫说起。 那天下班,正走在以往熟悉的的小...
    东词大刺阅读 296评论 1 1