解決vue-pdf的簽章不顯示問題記錄
在使用vue-pdf @4.3.0時發(fā)現(xiàn)上傳一般的普通pdf正常預覽,但是上傳帶有紅頭文件的和和特殊字體的pdf無法正常內容顯示,文字丟失問題。
1、查看控制臺報錯信息

2、缺少字體原因
getNumPages(url) {
var loadingTask = pdf.createLoadingTask({
url: url,
//引入pdf.js字體
cMapUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@4.8.69/cmaps/',
cMapPacked: true
});
this.url = loadingTask;
loadingTask.promise.then((res) => {
this.numPages = res.numPages;
})
}3、vue-pdf 是依賴于 pdfjs-dist 庫的,而它依賴的pdfjs-dist庫的版本不支持顯示簽章
在 node_modules/pdfjs-dist/es5/build/pdf.worker.js 發(fā)現(xiàn)有這么一段代碼:
if (data.fieldType === 'Sig') {
data.fieldValue = null;
// _this3.setFlags(_util.AnnotationFlag.HIDDEN);
}其中 _this3.setFlags(_util.AnnotationFlag.HIDDEN)就是隱藏電子簽章,注釋這段代碼去修復這個問題了。
4、生產環(huán)境同步去修改,用到另一個插件 patch-package
它的作用就是打補丁, 當某些模塊有bug的時候, 先在依賴包修改,在執(zhí)行以下命令
npm install patch-package npx patch-package pdfjs-dist
執(zhí)行后會在項目根目錄生成patches文件


同時你也要在 package.json 的腳本scripts中添加
"scripts": {
...
"postinstall": "patch-package"
},后續(xù)執(zhí)行 npm install 時,會自動為依賴包打補丁
5、worker-loader 的默認打包路徑是在 dist 根目錄下,為了統(tǒng)一我們想把它打包到 dist/static/js 目錄下,我們依舊通過更改源碼的方式是設置路徑。
找到 node_modules/worker-loader/dist/index.js 文件,然后把:
const filename = _loaderUtils2.default.interpolateName(this, options.name || '[hash].worker.js', {
context: options.context || this.rootContext || this.options.context,
regExp: options.regExp
});改為我們想要的路徑
const filename = _loaderUtils2.default.interpolateName(this, options.name || 'static/js/[hash].worker.js', {
context: options.context || this.rootContext || this.options.context,
regExp: options.regExp
});最后,再運行 npx patch-package worker-loader,生成worker-loader+2.0.0.patch補丁包

到此這篇關于解決vue-pdf的簽章不顯示問題的文章就介紹到這了,更多相關vue-pdf簽章不顯示內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue3?element?plus按需引入最優(yōu)雅的用法實例
這篇文章主要給大家介紹了關于vue3?element?plus按需引入最優(yōu)雅的用法,以及關于Element-plus按需引入的一些坑,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-03-03
Vue3響應式原理分析(Proxy(obj,{get(){},set(){}}))
文章詳細分析了Vue3的響應式原理,包括Proxy對象的get和set方法,以及雙向數(shù)據(jù)綁定,通過代碼示例展示了Vue3和Vue2在set方法上的區(qū)別,說明了Vue3能夠正確修改值而Vue2不能2025-10-10
vue 實現(xiàn)LED數(shù)字時鐘效果(開箱即用)
這篇文章主要介紹了vue 實現(xiàn)LED數(shù)字時鐘效果(開箱即用),每一個數(shù)字由七個元素構成,即每一個segment元素,本文給大家分享實現(xiàn)實例,感興趣的朋友一起看看吧2019-12-12
Vue build過程取消console debugger控制臺信息輸出方法詳解
這篇文章主要為大家介紹了Vue build過程取消console debugger控制臺信息輸出方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09

