首页 文章

有没有办法让FPDF / FPDI或Zend_Pdf支持解析大于1.4的PDF?

提问于
浏览
13

我正在尝试将现有PDF(另外创建)添加到使用FPDI使用FPDF创建的PDF中 . 它似乎适用于大多数PDF,但我收到以下错误:

FPDF error: Unable to find xref table.

经过一些测试,我发现如果我使用的是1.4或更低版本的Acrobat(Acrobat v5或更低版本),它似乎可行 . 看文件似乎是因为PDF格式不同 .

有解决方法吗?我可能有10 000个用户上传的PDF文件,其中一些是新的,有些则没有 . 令人讨厌的是,FPDI只是死了而不是造成某种错误甚至返回错误

我现在能想到的唯一解决方案是解析PDF文件的第一行以确定版本,并且只添加那些可以使用的版本 .

Edit:

我也在Zend_Pdf中尝试了这个,它使用Zend Framework附带的演示文件得到了以下结果:

Fatal error: Uncaught exception 'Zend_Pdf_Exception' with message 'Cross-reference streams are not supported yet.' in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php:331
Stack trace:
#0 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php(455): Zend_Pdf_Parser->_loadXRefTable('116')
#1 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(297): Zend_Pdf_Parser->__construct('/Volumes/Docume...', Object(Zend_Pdf_ElementFactory_Proxy), true)
#2 /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf.php(250): Zend_Pdf->__construct('/Volumes/Docume...', NULL, true)
#3 /Volumes/Documents/temp/ZendFramework-1.7.7/demos/Zend/Pdf/demo.php(37): Zend_Pdf::load('/Volumes/Docume...')
#4 {main}
  thrown in /Volumes/Documents/temp/ZendFramework-1.7.7/library/Zend/Pdf/Parser.php on line 331

是否无法解析大于1.4的PDF?

7 回答

  • -1

    您可以将FPDI与TCPDF一起使用,它将生成并读取(使用FPDI)1.7版PDF .

    TCPDF - PHP class for PDF .


    EDIT

    我最近遇到了使用FPDI和TCPDF使用各种版本和格式的PDF的问题,我可以确认1.4以上的PDF版本是命中与错过,有趣的是我有很多工作1.7 PDF,以及在1.5和1.6上工作约50/50 .

    我通过使用GhostScript将所有不可用的PDF文件转换为v1.4来解决这个问题,您可以从命令行使用GhostScript . 使用GhostScript lib 文件夹中的 ps2pdf14 .

  • 4

    我刚刚发布了一对项目(TCPDI / tcpdi_parser,分别基于FPDI和tcpdf_parser),它们与TCPDF 6(和FPDF_TPL)一起导入v1.4以上的PDF(到目前为止测试到1.6,但我会一旦我找到1.7 PFD来测试它,确保它适用于1.7),而不需要任何商业插件 . 基本安装和使用说明可在TCPDI README中找到;请随意尝试并通过Github跟踪器报告任何问题 .

  • 19

    Setasign提供PDF解析器作为FPDI的commercial addon . 到目前为止,我们使用新的解析器解析了1.7版本的PDF文件没有麻烦 .

  • 1

    我发现使用商业版的FPDI PDF-Parser解决了我的问题 . 我有没有解析的任何PDF(除非PDF已损坏或有其他奇怪的事情发生) .

  • 6

    对于symfony,我用这个lib来转换> 1.4 https://packagist.org/packages/xthiago/pdf-version-converter

  • 4

    如果您有Acrobat PDF writer,则可以操作作业设置以使您正在打印/保存的PDF与PDF 1.4兼容 . 由于我需要这个产品的微不足道的原因,获得与大于1.4的版本兼容的商业版本似乎不值100欧元 .

  • 3

    我的团队删除了部分代码 . 我们停止了代码添加水印到pdf . 这解决了我们的问题 . PDF> = 1.5

相关问题