Редактирование PDF с версией выше, чем 1.4 с Zend_Pdf - PullRequest
0 голосов
/ 19 марта 2012

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

1 Ответ

2 голосов
/ 23 октября 2012

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

Насколько я знаю, Zend_Pdf понимает только PDF до версии 1.4 , и в настоящее время нет намерения изменить это (в Zend-Framwork 1). Так что нет никаких шансов добиться этого с Zend_Pdf.

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

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

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

...