0

我有一个应用程序,它将一些数据添加到现有的 pdf 文件并将其另存为另一个 pdf 文件。对于编辑,我使用的是 Zend Framework 的一部分 Zend_Pdf,但它不适用于版本高于 1.4 的 pdf,但我需要编辑的 pdf 文件有时版本高于 1.4。我在这个 PHP 应用程序中找不到任何可以直接解决这个问题的解决方案。那么您知道一些可以正常工作的解决方案吗?

当我尝试编辑更高版本时,它会显示此错误:

Fatal error: Uncaught exception 'Zend_Pdf_Exception' with message 'PDF file syntax error. Offset - 0x1BC36D. Wrong W dictionary entry. Only type field of stream entries has default value and could be zero length.' in E:\*****Parser.php:236
Stack trace: 
#0 E:\*****Parser.php(460): Zend_Pdf_Parser->_loadXRefTable('1819501')
#1 E:\*****Pdf.php(318): Zend_Pdf_Parser->__construct('./sources/978-8...', Object(Zend_Pdf_ElementFactory_Proxy), true)
#2 E:\*****Pdf.php(267): Zend_Pdf->__construct('./sources/978-8...', NULL, true)
#3 E:\*****pdf.php(21): Zend_Pdf::load('./sources/978-8...')
#4 E:\*****TestApp.php(54): pdf->pdfLoader()
#5 {main} thrown in E:\*****Parser.php on line 236
4

1 回答 1

4

在 PDF 版本 1.5 中,PDF 文件中对象的引用发生了变化。只要不以兼容的方式保存 1.5 版中的 PDF 文件(使用旧版本 1.4 引用除了新版本之外),不理解 PDF 1.5 版的应用程序就无法分析文档的结构.

据我所知 Zend_Pdf 只能理解1.4 版的PDF ,目前无意改变它(在 Zend-Framwork 1 中)。所以没有机会用 Zend_Pdf 来实现它。

FPDI等其他库可能能够读取这些文档,但这需要完全重写您的代码。

而其他一些 PDF 库(如PDFlib )不能更改现有的 PDF 文件。他们可以创建新文件并从现有文件中集成部分(最高版本 1.7),但无法更改现有文件。

抱歉,但在我看来,唯一的解决方案是避免使用高于 1.4 版的 PDF 文件。或者当 Zend_Pdf 为 Zend_Framework 2 重写时,它允许操作更高版本的 PDF 文件。

于 2012-10-23T09:38:33.433 回答