Node.js 是否可以在不渲染PDF的情况下将图像添加到PDF?

Node.js 是否可以在不渲染PDF的情况下将图像添加到PDF?,node.js,pdf,Node.js,Pdf,我正在考虑向Node.js中的现有PDF添加图像。我发现的PDF库中似乎没有一个能够修改现有的PDF,所以我计划自己实现它。我正试图弄清楚这是否太多的工作,因为我总是可以用iTextPDF在服务器端完成,但我更喜欢在我的应用程序(Electron使用Node.js)中完成 如果我只想修改一个现有的PDF并添加一个图像,我是否需要编写一个完整的呈现库,或者PDF的结构是这样的,我可以编写一个非常小的解析器来获取我想要的页面并使用正确的格式插入图像 具体地说,我之所以这样问是因为我之前研究过编写一个

我正在考虑向Node.js中的现有PDF添加图像。我发现的PDF库中似乎没有一个能够修改现有的PDF,所以我计划自己实现它。我正试图弄清楚这是否太多的工作,因为我总是可以用iTextPDF在服务器端完成,但我更喜欢在我的应用程序(Electron使用Node.js)中完成

如果我只想修改一个现有的PDF并添加一个图像,我是否需要编写一个完整的呈现库,或者PDF的结构是这样的,我可以编写一个非常小的解析器来获取我想要的页面并使用正确的格式插入图像

具体地说,我之所以这样问是因为我之前研究过编写一个文本提取库,为了得到文本的位置,你必须渲染几乎整个PDF,因为位置是如何处理的。在这种情况下,要绕过服务器端处理,工作量太大了


明确地说,只是询问是否有可能做到,而不是如何做到(不要太宽泛,我相信我能理解这一部分)。

要执行PDF的小操作,您需要实现PDF数据结构的通用读取、解压缩、加密和遍历。您需要处理的一些事情包括:

  • PDF语法的基本解析
  • 通过交叉引用索引和/或交叉引用索引和对象流进行索引
  • 对象(num、字节字符串、十六进制字符串、字典、数组、布尔值…)
  • 过滤器和变量(LZW、扁平、运行长度、预测器)
  • 加密(RC4、AES、自定义安全处理程序)
  • 页面树遍历
  • 页面内容流的基本处理
  • 图像处理
  • 序列化,或者重写整个PDF,或者对现有PDF进行增量更新

任何事情都是可能的,但实际上,您需要一个PDF库或工具包,客户端或服务器端,才能完成此任务。

另请参见此问题的答案。如果您想在页面上绝对定位图像,最好先将现有页面内容包装到
q
Q
(保存/恢复)将页面图形恢复到初始状态。一些高级工具包可能会帮你做到这一点,看起来可能要简单得多。我的研究表明,您可以简单地将新内容附加到PDF的末尾,而不必更改原始内容中的任何内容。有关更多信息,请参阅和。仍在尝试。同意,增量更新可能是将更改写入PDF的最简单方法。但阅读PDF是最难的部分。我坚持我的答案,包括:解析、对象、过滤器、可能的加密和页面树遍历,以及一些序列化。这是关于解析PDF的,这只是问题的一部分:好的,您肯定需要在
q
中包装wkhtmltopdf生成的内容<代码>Q在附加图像之前。请参见此答案-