【发布时间】:2014-06-19 17:38:18
【问题描述】:
我正在寻找一种使用 JavaScript 在现有 PDF 之上添加文本的方法。 我将其设想为用户单击按钮下载 PDF 并接收包含此原始 PDF 的文件和写在页面上的附加文本。
有什么办法可以做到吗?
使用现有的 PDF 以保留其上的原始设计非常重要,并且 PDF 还包括以不同字体和各种 unicode 字形专门排版的文本。
从网页生成此文本到 PDF 也很重要,因为生成的每个文本都会略有不同,从而为最终用户创建一个独特的 PDF。
我一直在网上研究这个话题,找到了jsPDF库,但是那个好像只生成PDF,而不是写在现有的PDF之上,而且我需要的PDF内容太复杂,无法使用jsPDF生成全部。如果没有必要,我不想使用现有的 PDF 作为背景图片。
我还发现了一些后端库,例如 PDFKit,但我希望尽可能避免使用后端库,而且它似乎也不会覆盖现有的 PDF。
我在网上看到了一些关于文本字段的信息,但无法理解这是否可行——是否可以在 PDF 中添加文本字段,然后从网页将文本插入这些字段在用户下载之前?
非常感谢。
【问题讨论】:
-
我在这个领域没有经验,但首先想到的是像 pagedown 这样的降价编辑器,在 StackOverflow 上用于格式化问题。它有用于生成 pdf 而不是 html 的插件,但它们可能需要服务器端脚本
-
我不知道有任何 JavaScript 库可以让你这样做,但你发现有很多服务器端库,它们工作得非常好,完全符合预期。 iText (Java) 和 iTextSharp (.Net) 是我个人知道的两个,它们完全可以满足您的需求。
-
嘿伙计,你没有提到任何关于服务器支持的事情。在我工作的地方,我们根据发送到 Rails 服务器的变量创建自定义 .pdf 报告。我可以看到有类似的东西,你将现有的 .pdf 和输入文本分层到一个合并的 .pdf 中。如果这是一个选项,我们会发疯的。
-
您是说您的要求是在浏览器中使用 javascript 执行此操作吗?我已经多次完成了这个确切的事情,但我依靠我的服务器运行时来伪造它。 (IIS,或在向用户吐出最终 pdf 流之前执行的东西。)然后可以使用服务器环境的所有 3rd 方工具,即使 pdf 在服务器上并且不受您的控制,您也可以这样做通过添加 pdf 图层并添加您的文本或图形。我通常将其添加到新图层。获取原始 PDF DPI 分辨率,不要假设所有 pdf 都具有相同的分辨率和比例。
-
@taystack,在我的特殊情况下,LAMP(PHP) & 我现在这样做的方式是 . . .在客户端通过JS生成图表,转换为画布,转换为BASE64,发送到服务器,将BASE64转换为PNG。服务器使用 TCPDF 库 + FPDI 使用现有的 PDF 作为模板 + 在其上添加图像 + 文本,将其发送回客户端。我希望摆脱精神错乱并使用纯粹的 JS 方法。
标签: javascript html pdf dynamically-generated