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

18 php fpdf fpdi

我正在运行以下代码,并给我这个错误:FPDF error: This document (testcopy.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI.我使用另一个名为pdf test.pdf,并且工作正常,但它给了我错误testcopy.pdf.

我认为这是解析器问题.任何人都知道可以与fpdf一起使用的任何其他解析器以避免此错误吗?

我的代码:

require('fpdf17/fpdf.php'); 
require('fpdf17/fpdi.php'); 
// initiate FPDI 
$pdf = new FPDI(); 
while (ob_get_level())
ob_end_clean();
header("Content-Encoding: None", true);
// set the sourcefile 
$pagecount = $pdf->setSourceFile('testcopy.pdf');
Run Code Online (Sandbox Code Playgroud)

我想在两个pdf中分割pdf,并希望在文件附件字段中附加两个pdf.如何将pdf保存到服务器.用fpdf可以实现吗?

小智 27

是的,完全FPDF库仅支持PDF版本1.4及更低版本.所以来自这个问题的使用GhostScript.此脚本有助于动态更改PDF版本.

(1)在这里下载Ghostscript.

(2)安装Ghostscript并定义环境变量PATH.

(3)然后,使用下面的PHP代码更改PDF版本.

shell_exec( "gswin32 -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=".$new_pdf." ".$old_pdf.""); 
Run Code Online (Sandbox Code Playgroud)

(4)现在我们将1.4版本的PDF作为输出,然后继续使用FPDF.

请享用!


sha*_*mos 14

该文件需要是PDF 1.4(Acrobat 5)或更低版本.如果您有Adobe Acrobat Pro,可以使用文档 - >减小文件大小来更改此项.


Mar*_*ood 8

到目前为止,我无法解决问题。这就是原因,您可能会遇到同样的问题,因此这个答案对您来说也是无价之宝。

我无法访问 acrobat,因此无法降级原始 PDF 的版本。我无法购买已升级加密的库的较新版本。

最后我使用在线PDF转换器降级到版本5(1.4)

如果您找不到,这里有一个完整的链接。

https://docupub.com/pdfconvert/
Run Code Online (Sandbox Code Playgroud)

(请记住,链接的内容可能会更改)

  • 这应该是公认的答案。迄今为止最简单的方法。 (2认同)

Ant*_*sev 6

以下是我对另一个主题的回答:

"可以通过重新保存模板和更改压缩类型来解决此问题.在Adobe Acrobat Pro中,转到文件 - >另存为 - >优化的PDF->弹出左列表 - 清理,对象压缩选项 - >更改为"压缩文档结构" - >好的保存"

参考.使用fpdi编辑受密码保护的pdf文件


Joh*_*ohn 5

我有一个相同的问题,即PDFMerger不适用于某些PDF。看来Adobe一直在更新pdf扩展的压缩方式。

我找到了Chrome的解决方案。

1. Open the PDF file(which does not work with PDFMerger) with Chrome
2. Right Click and Print
3. Change destination as [Save as PDF]
4. This exported PDF file is compatible with PDFMerger
Run Code Online (Sandbox Code Playgroud)


rek*_*ire 0

我和你有一个非常相似的错误。我的解决方案是将pdf转换为较低的pdf版本。一切都按预期进行。

我希望这个简单的技巧能帮到你!