30

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

4

9 回答 9

39

是的,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。

享受!

于 2015-04-10T11:52:28.100 回答
16

我遇到了相同的问题,即 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
于 2017-09-13T06:11:08.903 回答
15

The file needs to be PDF 1.4 (Acrobat 5) or lower. If you have Adobe Acrobat Pro you can change this with Document->Decrease File Size.

于 2012-09-12T11:08:24.480 回答
10

浏览到目前为止的答案,我无法解决问题。这就是为什么,你可能有同样的问题,所以这个答案对你来说也是无价的。

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

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

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

https://docupub.com/pdfconvert/

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

于 2016-02-15T10:53:50.523 回答
6

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

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

参考。使用 fpdi 编辑受密码保护的 pdf

于 2012-12-14T13:06:17.650 回答
1

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

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

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

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

希望能帮助到你

于 2013-08-18T17:23:10.623 回答
1

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

ghostscript -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=new_file.pdf file.pdf
于 2021-06-23T17:00:01.197 回答
0

我和你有一个非常相似的错误。我的解决方案是将 pdf 转换为较低的 pdf 版本。比一切都像预期的那样工作。

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

于 2012-09-01T08:32:52.940 回答
0

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

于 2020-11-09T06:31:34.083 回答