需求
- pdf頁面顯示在ios11以下的環境,合同的簽名印章或簽字會顯示不出
解決方案(初步處理參考下文引用,這里是后續具體做法)
- 現在通過使用pdf.js插件,參考下文,引入自己的代碼

- 我把generic文件夾放在static,viewer.html變成viewer.ftl
- 后端代碼添加
@RequestMapping(value = {"/showPdf.do", "showPdf"})
public String showPdf(ModelMap modelMap, HttpServletRequest request) throws Exception {
log.info("---------------showPdf start---------------");
HashMap<String, Object> hashMap = this.getHashMap(request);
String pdfId = (String) hashMap.get("pdf_id");
modelMap.put("pdf_id", pdfId);
log.info("---------------showPdf end pdf_id:{}---------------", pdfId);
return "manager/viewer";
}
- 把默認訪問pdf地址提取到viewer.ftl
<script>
DEFAULT_URL = 'view_pdf?pdf_id=${pdf_id}';
</script>
- 經過上面步驟已經可以順利訪問pdf頁面了,但是印章默認它是不顯示的,還需要改點代碼
- 找到pdf.worker.js該文件下'Sig'這個參數所在地,不同版本代碼可能有所不同,但都是類似的做法,注掉返回false的地方
var parent = Annotation.prototype;
Util.inherit(WidgetAnnotation, Annotation, {
isViewable: function WidgetAnnotation_isViewable() {
// if (this.data.fieldType === 'Sig') {
// warn('unimplemented annotation type: Widget signature');
// return false;
// }
return parent.isViewable.call(this);
}
});
參考 https://www.cnblogs.com/kagome2014/p/kagome2014001.html