我有一个应用程序,它添加一些数据到现有的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发布于 2012-10-23 17:38:33
在PDF版本1.5中,PDF文件中对象的引用已更改。只要版本1.5中的PDF文件没有以兼容的方式保存(除了使用新版本之外还使用旧版本1.4引用),不理解PDF版本1.5的应用程序就不可能分析文档的结构。
据我所知,Zend_Pdf只理解PDF up to version 1.4,目前有no intention to change that (在Zend-Framwork1中)。因此,没有机会在Zend_Pdf上实现这一点。
像FPDI这样的其他库可能能够读取这些文档,但这需要完全重写代码。
而其他一些PDF库,如PDFlib,不能改变现有的PDF文件。它们可以创建新的文件,并从现有文件(最高版本1.7)中集成零件,但不能更改现有文件。
对不起,在我看来,唯一的解决办法就是避免PDF文件版本高于1.4。或者,当为PDF2重写Zend_Pdf时,它允许操作更高版本的Zend_Framework文件。
https://stackoverflow.com/questions/9775069
复制相似问题