2012-03-19 3 views
0

У меня есть приложение, которое добавляет некоторые данные в существующий файл PDF и сохраняет его как другой файл PDF. Для редактирования я использую часть Zend Framework, Zend_Pdf, но он не будет работать с pdf-версиями с версией более 1,4, но файлы 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

+0

Я добавляю его под вопрос. @Бен –

ответ

2

В PDF версии 1.5 ссылающехся объекты в PDF-файлах изменился. До тех пор, пока PDF-файл в версии 1.5 не будет сохранен совместимым способом (с использованием старой версии 1.4, ссылающейся, кроме новой), нет никакого способа, чтобы приложение, которое не понимает PDF-версию 1.5, может анализировать структуру документа ,

Насколько я знаю, Zend_Pdf понимает только PDF up to version 1.4 и в настоящее время существует no intention to change that (в Zend-Framwork 1). Таким образом, нет никакой возможности получить это с Zend_Pdf.

Другие библиотеки, такие как FPDI, могут читать эти документы, но для этого потребуется полная переработка вашего кода.

И некоторые другие PDF-библиотеки, такие как PDFlib, не могут изменять существующие PDF-файлы. Они могут создавать новые и интегрировать части из существующих (вплоть до версии 1.7), но невозможно изменить существующий файл.

Извините, но единственное решение кажется мне избежать PDF-файлов выше версии 1.4. Или, возможно, когда Zend_Pdf переписан для Zend_Framework 2, он позволяет манипулировать более высокими версиями PDF-файлов.