Php 有没有办法通过dompdf&;向合并的PDF添加链接;鬼书

Php 有没有办法通过dompdf&;向合并的PDF添加链接;鬼书,php,pdf,ghostscript,dompdf,Php,Pdf,Ghostscript,Dompdf,我正在尝试为几个PDF文档创建一个内容页,其中包括指向每个(与GS合并)PDF开头的链接 目前我有: 用作内容页的HTML页面,可转换为PDF格式(此部分有效) 若干节分隔页(使用domPdf转换的PDF),其中包含节X锚定 要合并的其他PDF文档,以创建一个带有内容页的大型PDF 我正在shell上运行GS以处理PDF文档的合并: gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=save_path/final.pdf content

我正在尝试为几个PDF文档创建一个内容页,其中包括指向每个(与GS合并)PDF开头的链接

目前我有: 用作内容页的HTML页面,可转换为PDF格式(此部分有效) 若干节分隔页(使用domPdf转换的PDF),其中包含节X锚定 要合并的其他PDF文档,以创建一个带有内容页的大型PDF

我正在shell上运行GS以处理PDF文档的合并:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=save_path/final.pdf contents.pdf section1.pdf brochure1.pdf section2.pdf brochure2.pdf back.pdf
GS成功地将PDF文档合并为1个大PDF

但是,这些链接不起作用

PDF似乎无法链接到目标位于原始文件之外的文档

如果我在内容文件中添加了一个链接,并且目标是同一个内容文件。最终输出的PDF呈现链接,它们按需要运行

所以,我的问题是,是否有可能在合并的PDF文档中包含一个链接,该链接将链接到其他合并的PDF文件

任何提示或建议都会非常有用

谢谢


David

是的,这里的问题是Ghostscript在处理第一个文件时无法知道最终文件中有多少页,更重要的是,这些页的对象编号是什么

现在,链接注释的/Dest可能类似于[page/XYZ left-top-zoom] 本例中的“页面”是一个页面对象,它是对PDF对象的间接引用,因此第1页上引用第2页的/Link可能类似于:

[18 0 R/XYZ 0 792 1]

如果我们假设第2页是输出PDF文件中的对象编号18

在处理注释时,PDF解释器执行注释,这是它对输入PDF文件所做的最后一件事。这意味着所有页面都已完成,因此pdfwrite设备知道页面2有(例如)对象编号18。因此,确定哪个页面与哪个对象编号关联没有问题

但在您的情况下,您将完全运行第一个文件,然后运行注释(在执行第二个文件之前)。此时,一个或多个链接指向一个尚不存在的页面。由于无法知道在执行后续文件时该页面的对象编号是多少,因此pdfwrite设备无法处理链接注释

所以我担心你不能简单地用Ghostscript做你想做的事。事实上,我不明白你怎么能让你的内容文件合法地有这样的链接

你可以这样做,但这比把文件串在一起要困难得多。您可以将所有链接注释保留在第一页之外,一起处理所有PDF文件,然后在处理所有PDF文件后发送一批pdfmark指令,这些指令描述了要创建的链接注释

当然,我可能没有抓住重点;您还没有提供任何示例文件来查看,因此我无法确定您的文件目前使用的是哪种链接注释和dest

顺便说一句,让我注意到pdfwrite设备不会“合并”PDF文件,这是一个复杂得多的过程。您可以找到记录的过程,我认为它值得一读,这样您就可以了解设备在这种情况下的功能和限制


从根本上讲,Ghostscript和pdfwrite decice并不打算用作PDF编辑或操作工具。

感谢您的回答,这是一个很好的解释,说明了在向未知大小的文档添加链接时遇到的问题和困难。我会接受你的答案,因为我的研究也表明,以这种方式是不可能的。