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

时间:2013-06-14 05:35:25

标签: php fpdi

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

我知道我可以通过Acrobat更改PDF文件的PDF版本,但我遇到过这样做的错误。

我正在使用FPDI为我们在公司销售的PDF打印水印。我注意到其中一个PDF从1.7开始降级到1.4通过Acrobat看起来几乎相同但在我的水印功能完成后,PDF将在我的封面的右下部分有一个黑色背景的白色空格。简而言之,PDF在整个过程之后看起来很糟糕。

4 个答案:

答案 0 :(得分:5)

我在目前正在处理的项目中遇到了同样的限制,并最终创建了基于TCPDF解析器的自己的解析器,该解析器使用名为TCPDI的FPDI的修改版本和未修改的FPDF_TPL副本。它适用于TCPDF 6,并且至少支持PDF 1.6(我还没有得到1.7 PDF方便试用,但我很快会找到一个以确保它有效)。

如果您仍然想要这样做,请随时试用TCPDI / tcpdi_parser - 如果您遇到任何问题,请通过Github和我报告看看他们。可以在TCPDI README

中找到基本安装和使用说明

答案 1 :(得分:0)

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

代码在that link上可用。

答案 2 :(得分:0)

由于在FPDI上进行搜索时Google搜索结果较高。 付费版本可以做到1.4以上:

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

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

答案 3 :(得分:0)

我通过使用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');