【问题标题】:Editing pdf's with higher version than 1.4 with Zend_Pdf使用 Zend_Pdf 编辑高于 1.4 版本的 pdf
【发布时间】:2012-03-19 17:39:16
【问题描述】:

我有一个应用程序,可以将一些数据添加到现有的 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

【问题讨论】:

  • 是否出现任何错误?你可以在这里发布错误吗?

标签: php zend-framework zend-pdf


【解决方案1】:

在 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 等其他库可能能够读取这些文档,但这需要完全重写您的代码。

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

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

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 1970-01-01
    • 2011-12-30
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 2018-10-26
    • 2012-11-06
    相关资源
    最近更新 更多