11

如何在 PHP 中将 PDF 1.5 版转换为 1.4 版?谁能指出我正确的方向?

4

4 回答 4

16

我也有类似的需求,发现 Ghostscript 可以修改 PDF 版本。文档在这里: http: //ghostscript.com/doc/current/Use.htm

但是,我在文档中没有找到任何关于 dCompatibilityLevel 选项的具体内容。相反,我发现这篇文章展示了它的用途:http ://rohieb.wordpress.com/2012/06/09/use-ghostscript-to-convert-pdf-files/

这是命令:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH 
  -sOutputFile=new-pdf1.5.pdf original.pdf
于 2014-03-15T22:58:17.930 回答
5

您可以轻松地将 PDF 版本 1.5 转换为 1.4 。

您可以使用 2 种方式转换 PDF 版本。

  1. 使用 ghostscript 命令行工具

exec('gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -sOutputFile=new.pdf old.pdf')

  1. 使用 github 提供的 PHP 库。从这里下载

我开发了一个 PDF 加密工具,可以加密任何版本的 pdf 文件。在将 PDF 传递给 fpdi pdf 解析器进行加密之前,我使用 ghost-script 转换 PDF 版本。它几乎完成并可以使用了。这里

于 2017-06-21T09:47:44.970 回答
4

多年来我有同样的问题,没有重新安装任何东西,有一个在线转换器:https ://docupub.com/pdfconvert/

于 2016-08-18T05:58:31.280 回答
1

这是一个工作完整的脚本,不完美但简单。脚本从 c:\temp_in\ 读取所有 pdf 文件并将它们转换为 1.4 版,并保存在文件夹 c:\temp_done 中。鬼脚本的路径有一些问题,所以路径在 shell_exec 中完全声明。还通过实现“2>&1”为脚本添加了一些调试。(显然需要安装 ghost 脚本。)

<?php
if ($handle = opendir("c:/temp_in/")) {
while (false !== ($file = readdir($handle))) {
    if ('.' === $file) continue;
    if ('..' === $file) continue;

    $result = shell_exec('"C:\Program Files\gs\gs9.27\bin\gswin64c" -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -sOutputFile="c:\temp_done\\'.$file.'" "c:\temp_in\\'.$file.'" 2>&1');
    echo $result;

}
closedir($handle);
}
?>
于 2019-07-05T07:56:59.847 回答