如何在 PHP 中将 PDF 1.5 版转换为 1.4 版?谁能指出我正确的方向?
4 回答
我也有类似的需求,发现 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
您可以轻松地将 PDF 版本 1.5 转换为 1.4 。
您可以使用 2 种方式转换 PDF 版本。
- 使用 ghostscript 命令行工具
exec('gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -sOutputFile=new.pdf old.pdf')
- 使用 github 提供的 PHP 库。从这里下载
我开发了一个 PDF 加密工具,可以加密任何版本的 pdf 文件。在将 PDF 传递给 fpdi pdf 解析器进行加密之前,我使用 ghost-script 转换 PDF 版本。它几乎完成并可以使用了。这里
多年来我有同样的问题,没有重新安装任何东西,有一个在线转换器:https ://docupub.com/pdfconvert/
这是一个工作完整的脚本,不完美但简单。脚本从 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);
}
?>