如何在php中修复没有外部参照的pdf文件?

kus*_*agi 0 php pdf

我有没有外部参照表的 pdf 文件,这个 pdf 是由 3d 端服务生成的

是否有任何库\解决方案可以修复此 pdf 文件而无需在 adobe acrobat 中打开它?错误是Unable to find xref table

Pat*_*lot 5

为从未有过的 pdf 创建外部参照表应该不会太难(不太可能涉及线性化或增量保存),因此您必须怀疑该 PDF Producer 生成的 PDF 的质量。

获取 PDF (v1.7) 参考的副本;您需要参考的部分是 3.2.9 和 3.4(特别是 3.4.3 和 3.4.4),并在十六进制编辑器中打开您的文件。

滚动到文件的最底部。该文件应以“%%EOF”结尾;紧接其之前应该是 'startxref'[\r\n] 后跟一个数字,它是 'xref' 部分开头的字节偏移量。根据您的错误消息,此号码可能丢失或关闭。外部参照部分通常在最后一个 endobj 之后,但在拖车部分之上,而拖车部分本身就在 startxref 部分之上。在写出“外部参照”部分后,您将需要保留一份预告片的副本以供重新添加。

要创建外部参照部分,您需要扫描 PDF 正文中包含以下内容的行:IDNumber GenNumber 'obj'\r\n。在最简单的情况下,GenNumber 将始终为 0,并且 IDNumber 在您从上到下移动时始终按顺序增加。(如果 GenNumber 不为零,那么您正在处理一个已增量保存的文件;这是您不想处理的复杂情况)。跟踪每一行的偏移量以及 IDNumber 和 GenNumber。在外部参照中写出第一行,由第一个 IDNumber 和找到的间接对象的数量组成(假设它们都按顺序排列)。然后,为每个间接对象写出偏移量(填充到 10 位数字)、空格、GenNumber (00000)、空格、'n'、eol (\r\n)。之后,钉上之前保存的预告片,和 startxref 部分,以及 '%%EOF' 行。保存您的文件,看看是否可以解决文件的问题。