【发布时间】:2017-10-19 19:12:50
【问题描述】:
我有一个 Web 应用程序,它当前正在从服务器获取 PDF 的 base64 表示。我可以使用 Mozilla 的 pdf.js 在 <canvas> 上显示它,并通过下拉菜单切换页面。
根据我能找到的所有内容和Can Mozilla's pdf.js modify PDFs?,无法使用 pdf.js 编辑 PDF。
我找到了jsPDF,虽然我可以使用画布并为每一页使用.toDataURL() 并用它构建一个新的 PDF 文档,但有两个问题:
- 新生成的 PDF 将只是每一页上的一系列图像,因此原始 PDF 中的任何文本在我完成后都将只是一个图像。
- 我用 jsPDF 生成了一个新的 PDF,然后将它的 base64 发送回 pdf.js 以在画布上显示它。在这些步骤之间会发生页面图像缩放不正确的情况,因此在每次新的 PDF 更改后,每个页面都会占用大约 3/4 的画布。我一直无法让它保持相同的大小/比例。
jsPDF 看起来没有办法加载现有的 PDF,它只会创建新的 PDF。 pdfmake 和 PDFKit 看起来也只是创建新的 PDF 文件。
所以我的问题:
是否有任何东西可以同时查看 pdf(来自 base64)和对其进行更改? 理想情况下,我会注意画布的更改,然后将更改绘制到 pdf 页面上。完成后,将其导出为 base64 字符串以发送回服务器。
【问题讨论】:
-
你可以看看PDFNetJS。
-
我见过那个。这有点矫枉过正。与其包含一个或两个 JS 文件,看起来您需要包含多个资产文件夹,而且很难让这个在我的环境(Siebel 应用程序)中工作。不过,我正在尝试这个,直到找到一个更好的解决方案。
-
PDFNetJS 尝试检索 .mem 文件,这是一些二进制数据。我正在使用的应用程序 (Siebel) 无法提供此服务,因此看起来这不是一个选项。
-
我在开发 PDFNetJS 的公司工作。这是一个完整的查看/编辑 PDF SDK,可以在浏览器中完全运行在客户端。 .mem 文件是 Chrome 的 PNaCl 字节格式。 PDFNetJS 还将 WASM 用于 FireFox,并将 emscripten 作为最终后备(例如 IE11)。 “有点矫枉过正”,要支持世界上任何PDF文件,PDFNetJS需要很大,PDF标准复杂且庞大(例如JPEG2000,JBIG2,CCITT,多种字体格式,多种编码等)。跨度>
-
"修改它?"是指 MS Word 样式编辑吗?或者您是否希望进行特定的编辑?什么样的编辑?文本?图片?
标签: javascript pdf html5-canvas pdf.js