You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Ghostscript设置PDF元数据?解决DOMPDF生成PDF打印问题

解决Ghostscript处理PDF后元数据丢失的问题

Ghostscript默认处理PDF时会重置文档元数据,但你可以通过两种方式解决这个问题——要么保留原PDF的元数据,要么手动指定自定义元数据,下面分别给出具体实现方案:

1. 保留原PDF的元数据(推荐)

如果想直接沿用DOMPDF生成的原PDF里的作者、优化状态等元数据,只需在Ghostscript命令中添加-dPreserveMetadata参数,同时指定目标PDF版本(比如1.4,解决打印机兼容问题)即可。

示例PHP exec()调用:

$inputPdf = 'path/to/your/input.pdf';
$outputPdf = 'path/to/your/output.pdf';

// Ghostscript命令:转换PDF版本为1.4并保留原元数据
$command = "gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPreserveMetadata=true -o \"{$outputPdf}\" \"{$inputPdf}\"";

exec($command, $output, $returnVar);

// 检查执行结果
if ($returnVar === 0) {
    echo "PDF处理完成,原元数据已保留";
} else {
    echo "处理失败:" . implode("\n", $output);
}

注意:-dPreserveMetadata参数需要Ghostscript 9.19及以上版本支持,如果你的Ghostscript版本较低,建议升级到最新稳定版,或者使用下面的手动设置方法。

2. 手动指定自定义元数据

如果需要修改或重新定义元数据,可以利用Ghostscript的pdfmark功能,通过PostScript命令来设置文档信息。

示例PHP exec()调用:

$inputPdf = 'path/to/your/input.pdf';
$outputPdf = 'path/to/your/output.pdf';

// 定义元数据的PostScript片段
$pdfmark = <<<EOD
[/Author (G.J) 
/Title (Your Document Title) 
/Subject (PDF Compatibility Fix) 
/Keywords (DOMPDF, Ghostscript, PDF Metadata) 
/Creator (DOMPDF + Custom Ghostscript Processing) 
/DOCINFO pdfmark
EOD;

// Ghostscript命令:转换版本+设置自定义元数据
$command = "gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -o \"{$outputPdf}\" -c \"{$pdfmark}\" -f \"{$inputPdf}\"";

exec($command, $output, $returnVar);

// 检查执行结果
if ($returnVar === 0) {
    echo "PDF处理完成,自定义元数据已设置";
} else {
    echo "处理失败:" . implode("\n", $output);
}

常用可设置的元数据字段:

  • /Author:文档作者
  • /Title:文档标题
  • /Subject:文档主题
  • /Keywords:文档关键词(逗号分隔)
  • /Creator:文档创建工具
  • /Producer:文档生成工具(Ghostscript会自动添加,也可手动指定)

额外注意事项

  • 确保Ghostscript的路径在PHP的环境变量中,或者在命令里指定完整路径(比如Linux的/usr/bin/gs,Windows的C:\Program Files\gs\gsX.X.X\bin\gswin64c.exe)。
  • 如果路径或元数据包含特殊字符,记得用escapeshellarg()做转义处理,避免命令执行出错。

内容的提问来源于stack exchange,提问作者G.J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:54:46