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) 或更低版本。如果您有 Adobe Acrobat Pro,您可以使用 Document->Decrease File Size 更改此设置。
【讨论】:
【参考方案4】:查看到目前为止的答案,我无法解决问题。 这就是原因,您可能也有同样的问题,所以这个答案对您来说也是无价的。
我无法访问 acrobat,因此无法降级原始 PDF 的版本。我无法购买已升级加密的更新版本的库。
最后我使用在线 PDF 转换器将我的 PDF 文件降级到版本 5 (1.4)
如果你找不到,这里有一个完整的链接。
https://docupub.com/pdfconvert/
(请记住,链接的内容可能会更改)
【讨论】:
这应该是公认的答案。迄今为止最简单的方法。 谢谢!你节省了我的时间!最佳答案))【参考方案5】:这是我从另一个话题的回答:
"可以通过重新保存模板和更改压缩类型来克服。 在 Adobe 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”:此文档的访问被拒绝