2012-03-19 63 views
0

我有一個應用程序,它增加了一些數據到現有的PDF文件,並將其保存爲另一個PDF文件。爲了進行編輯,我使用Zend Framework的一部分Zend_Pdf,但它不適用於版本大於1.4的pdf,但我需要編輯的pdf文件有時比1.4更高。我無法找到任何可以在此PHP應用程序中直接解決此問題的解決方案。所以你知道一些解決方案可以正常工作嗎?編輯PDF的更高的版本比1.4 Zend_Pdf

它顯示了這個錯誤,當我嘗試編輯高版本:

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 
+0

是否有任何錯誤顯示出來?你可以在這裏發佈錯誤嗎? – Ben 2012-03-19 17:42:27

+0

我將其添加到問題中。 @Ben – 2012-03-19 17:54:14

回答

2

在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-Framwork 1中)。所以沒有機會通過Zend_Pdf來實現。

FPDI其他庫可能能夠讀取這些文件,但這需要你的代碼完全重寫。

而像PDFlib一些其他的PDF庫無法改變現有的PDF文件。他們可以創建新的部件並集成現有部件(最高版本爲1.7),但無法更改現有文件。

抱歉,唯一的解決方案在我看來,以避免PDF格式的文件比1.4版本高。或者,當Zend_Pdf被重寫爲Zend_Framework 2時,它允許操作更高版本的PDF文件。