pdf.js 踩坑日志,使用說(shuō)明, 中文不能顯示, 字體模糊, 簽名不能顯示

使用版本

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'>

引入上面的鏈接后, 全局暴露出來(lái)PDFJS這個(gè)對(duì)象

遇到的問(wèn)題

中文字體缺失


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, 在后面的演示代碼里面調(diào)用 getViewport這個(gè)方法可以解決字體模糊問(wèn)題

簽名不能加載問(wèn)題

控制臺(tái)的報(bào)錯(cuò)信息

Warning: Unimplemented widget field type "Sig", falling back to base field type. 問(wèn)題鏈接

把pdf.work.js下載下來(lái), 全局搜索下AnnotationFlag.HIDDEN, 找到類型下面的代碼, 把那行注釋掉, 在替換掉, 相應(yīng)的script


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

    warn('unimplemented annotation type: Widget signature');
    // 注釋下面這行代碼
    this.setFlags(AnnotationFlag.HIDDEN);

 }

整個(gè)演示代碼

   // 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);
    })
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評(píng)論 25 709
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,000評(píng)論 2 59
  • 孩子目前中班,可是從托班起老師們就開(kāi)始投訴說(shuō)我家孩子太鬧騰自制力太差,老是喜歡故意搗蛋,等升了中班,老師們...
    瑜此一生閱讀 388評(píng)論 1 1
  • 刻意殷勤事有成,立身何必惜浮名。 百花逢景任開(kāi)放,萬(wàn)物遇時(shí)皆發(fā)生。 后路前途兩相背,來(lái)人去客不同行。 莫辭負(fù)重艱難...
    雪窗_武立之閱讀 395評(píng)論 1 12
  • 貓真的是一種神奇的動(dòng)物-----這個(gè)故事讓我們從一只雙眼炯炯有神的的野貓說(shuō)起。 那天下班,正走在以往熟悉的的小...
    東詞大刺閱讀 335評(píng)論 1 1

友情鏈接更多精彩內(nèi)容