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

Posted

技术标签:

【中文标题】FPDF 错误:此文档 (testcopy.pdf) 可能使用了 FPDI 附带的免费解析器不支持的压缩技术【英文标题】:FPDF error: This document (testcopy.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI 【发布时间】:2012-08-22 15:52:57 【问题描述】:

我正在运行以下代码并出现此错误:FPDF error: This document (testcopy.pdf) probably uses a compression technique which is not supported by the free parser shipped with FPDI. 我使用了另一个名为 test.pdf 的 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');

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

【问题讨论】:

我以前没有遇到过这样的问题。顺便说一句,这里有一个类似的问题可能会有所帮助:***.com/questions/5441107/… thnx ..我检查了这个问题但没有帮助我..我想知道是否有任何解析器可以与 fpdf 一起使用???我认为 Fpdi 不支持所有类型的 pdf 格式。 【参考方案1】:

是的,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.""); 

(4) 现在我们得到 1.4 版本的 PDF 作为输出,然后继续 FPDF。

享受吧!

【讨论】:

谢谢!我必须将 gswin32 更改为 gs 才能正常工作 “定义环境变量PATH”是什么意思?提前致谢。 @Marsha 这意味着您应该将 ghostscript 可执行文件的路径添加到 Windows 操作系统上的 PATH 变量中。搜索这个关键字,它会告诉你如何。 "向窗口添加路径" 这应该被标记为答案这是迄今为止我看到的最好的镜头。 此链接显示了如何使用完整的实际示例完成它,它可能对某人有所帮助:infoconic.com/blog/…【参考方案2】:

我遇到了相同的问题,即 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

【讨论】:

我曾经使用 Ghostscript 来做这个,但这确实有效,更方便。谢谢! 为我工作,非常感谢!【参考方案3】:

文件需要是 PDF 1.4 (Acrobat 5) 或更低版本。如果您有 Adob​​e Acrobat Pro,您可以使用 Document->Decrease File Size 更改此设置。

【讨论】:

【参考方案4】:

查看到目前为止的答案,我无法解决问题。 这就是原因,您可能也有同样的问题,所以这个答案对您来说也是无价的。

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

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

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

https://docupub.com/pdfconvert/

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

【讨论】:

这应该是公认的答案。迄今为止最简单的方法。 谢谢!你节省了我的时间!最佳答案))【参考方案5】:

这是我从另一个话题的回答:

"可以通过重新保存模板和更改压缩类型来克服。 在 Adob​​e Acrobat Pro 中,转到文件->另存为->优化的 PDF->弹出左侧列表-清理, 对象压缩选项 -> 更改为“压缩文档结构” -> 确定保存”

参考。 Editing password protected pdfs with fpdi

【讨论】:

【参考方案6】:

对于那些没有任何专业版 Acrobat 的用户:

我在尝试使用 Office 功能保存到 PDF 时遇到了新版本 Word 的问题。 Office 中提供的 PDF 转换工具似乎正在使用较新的格式。这是我修复它的方法。

安装 NitroPDF 免费版(可与其他可下载的免费 PDF 创建器一起使用) 转到 Word 文档并选择“打印”。 在打印选项中,选择“Nitro PDF Creator (Reader 3)”或任何当前版本,而不是您的打印机。 将打开一个对话框,让您选择保存 PDF 的位置。

保存的版本可以被FPDF打开。

希望对你有帮助

【讨论】:

Chrome 似乎也做了同样的事情,在谷歌浏览器中打开并打印为 PDF【参考方案7】:

GPL Ghostscript 8.70 (2009-07-31) / Centos 7

ghostscript -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=new_file.pdf file.pdf

【讨论】:

【参考方案8】:

我遇到了和你一样的错误。我的解决方案是将 pdf 转换为较低的 pdf 版本。一切都像预期的那样工作。

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

【讨论】:

我知道我在询问另一个可以与支持所有类型版本的 fpdf 一起使用的解析器。【参考方案9】:

对于 Mac,您可以在预览中打开 PDF 文件并“导出为 PDF”。然后可以使用导出的。

【讨论】:

以上是关于FPDF 错误:此文档 (testcopy.pdf) 可能使用了 FPDI 附带的免费解析器不支持的压缩技术的主要内容,如果未能解决你的问题,请参考以下文章

“断点目前不会被击中。没有为此文档加载任何符号。” - .pdb 从错误的地方加载?

Chrome 中的 iframe 错误:无法从“窗口”读取“localStorage”:此文档的访问被拒绝

当前不会命中断点:此文档未加载任何符号

打字稿:如何在此文档中引用另一个文档的字段?

无法调试 - “断点当前不会被命中。没有为此文档加载任何符号”

FPDF 错误:无法包含字体度量文件