支持 PDF 版本高于 1.4 的 FPDI 免费解析器

Posted

技术标签:

【中文标题】支持 PDF 版本高于 1.4 的 FPDI 免费解析器【英文标题】:FPDI free parser that supports PDF version higher than 1.4 【发布时间】:2013-06-10 16:55:18 【问题描述】:

是否有可以完成这项工作的免费/开源 PDF 解析器? FPDI 附带的免费解析器仅支持最高 1.4 的 PDF 版本。我试过 TCPDF,但没有用。

我知道我可以通过 Acrobat 更改 PDF 文件的 PDF 版本,但我在执行此操作时遇到了错误。

我正在使用 FPDI 为我们公司销售的 PDF 添加水印。我注意到我通过 Acrobat 从 1.7 降级到 1.4 的其中一个 PDF 看起来几乎相同,但是在我的水印功能完成后,PDF 将在我的封面的右侧和底部有空白区域,其背景为黑色。简而言之,在整个过程之后,PDF 看起来不好卖。

【问题讨论】:

【参考方案1】:

我在我目前正在从事的项目中遇到了同样的限制,并最终基于 TCPDF 的解析器创建了我自己的解析器,该解析器与名为 TCPDI 的 FPDI 的修改版本和 FPDF_TPL 的未修改副本一起使用。它适用于 TCPDF 6,并且至少支持 PDF 1.6(我还没有手边的 1.7 PDF 可供尝试,但我很快就会寻找一个以确保它可以工作)。

如果您仍然想这样做,请随时尝试TCPDI / tcpdi_parser - 如果您遇到任何问题,请通过 Github 报告,我会调查他们。基本的安装和使用说明可以在TCPDI README找到。

【讨论】:

干得好!它只能使用 FPDF 吗?我使用 FDPF 创建了所有 PDF,我不想重新访问我的所有功能以适应 TCPDF。谢谢。 您的解析器(或 tcpdi)是否使用密码保护 PDF 文件并且只允许某些权限?我没有在你的代码中看到,所以我不确定。【参考方案2】:

我通过使用pdftk 解压缩PDF,然后将其加载到FPDI,然后使用pdftk 重新压缩它来解决此限制。

我确实查看了FPDI 的付费许可证,但在尝试编译和运行评估版本时遇到了巨大的困难,并且失去了希望/信心。除了分叉或克隆之外,TCPDI 缺少任何真正的安装路径,而且它们在 php 7.4 上看起来充其量都是不完整的。

installed pdftk on your machine 后,解决方案看起来有点像这样:

$PDF = new Fpdi();
try 
    $PDF->setSourceFile('./pdf.pdf');
 catch (\Exception $exception) 
    if (aBoolFunctionToDetectThisParticularException($exception)) 
        exec('pdftk ./pdf.pdf output ./pdf_expanded.pdf uncompress');
        $PDF->setSourceFile('./pdf_expanded.pdf');
     else 
        throw $exception;
    

如果您走这条路,重新压缩是个好主意,因为文件大小的差异很大。

exec('pdftk ./pdf_expanded.pdf output ./pdf_compressed.pdf compress');

【讨论】:

【参考方案3】:

FPDI 允许处理最高版本为 1.4 的 PDF 文件。您可以使用 GHOSTSCRIPT 将任何 PDF 文件转换为 1.4 版,然后再使用 FPDI 进行处理。

示例代码在我的官网博客this link.

更新 -

请立即关注this link。域名已从 webnius.com 更改为 infoconic.com

【讨论】:

那个链接的网站已经没有了,所以这里是它的回程机存档:web.archive.org/web/20190415124533/http://www.webnius.com/blog/… 感谢链接中的完整实际示例,如果您生成通用解决方案并在此处添加到此答案中,那就太好了。【参考方案4】:

因为当您在 FPDI 上搜索时,谷歌搜索结果很高。 付费版可以做到1.4以上:

https://www.setasign.com/products/fpdi-pdf-parser/details/

当您喜欢该软件时,购买它不是分配,而是您帮助开发人员。 :)

【讨论】:

对我来说 100 美元是什么。

以上是关于支持 PDF 版本高于 1.4 的 FPDI 免费解析器的主要内容,如果未能解决你的问题,请参考以下文章

FPDF 错误:此文档 (testcopy.pdf) 可能使用了 FPDI 附带的免费解析器不支持的压缩技术

PDFMerger 与 FPDI-PDF-PARSER

tcpdf - 从现有的 PDF 文档开始

如何使用 FPDF/FPDI 获得精确修改的 PDF?

php用FPDI合并pdf文件 证明FPDI真的不行!

使用 FPDI 加载到 TCPDF 时调整 PDF 大小