【问题标题】:Give the generated PDF a custom title给生成的 PDF 一个自定义标题
【发布时间】:2018-12-12 23:58:21
【问题描述】:

我已经使用命令合并了两个 PDF

$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName ";
这对我有用。但问题是新生成的 PDF 的标题没有按照我在header('Content-Disposition: inline; filename="Test.pdf"'); 中设置的那样设置 我希望标题是 Test.pdf 但标题仍然是合并 PDF 中最后一个 PDF 的标题。

【问题讨论】:

  • header 只是告诉浏览器它“应该”使用什么文件名(并且取决于浏览器,它可能会忽略您的定义),而不是服务器上实际物理文件的名称。完成后,您需要使用rename 操作更改服务器上的文件名。
  • @IncredibleHat rename 所做的只是更改现有文件的名称。我想要做的是给一个随机名称说“Generated-Pdf.pdf”作为我在屏幕上呈现的 pdf 的标题。

标签: php shell pdf header ghostscript


【解决方案1】:

在我看来,您需要在 PDF 文件的 Document /Info 字典中设置标题。您可以通过发送 DOCINFO pdfmark 来做到这一点。

您可以通过谷歌搜索来获取 pdfmark 参考手册。它在 Adob​​e 网站上,但他们经常移动家具,引用今天的 URL 是没有意义的。

您可以找到 Acrobat 9 参考第 28 页上描述的 DOCINFO pdfmark(我不知道是否有更新的),您需要类似以下内容:

[ /Title (My Title goes here) /DOCINFO pdfmark

这是 PostScript,因此您需要将其作为 PostScript 提供给 Ghostscript,这意味着您需要 -c-f 开关。所以像:

gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName -c "[ /Title (My Title goes here) /DOCINFO pdfmark" -f

你很幸运我发现了这个,因为你没有用 Ghostscript 标记它。

【讨论】:

  • 完美解决方案
猜你喜欢
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-19
  • 2022-01-22
  • 1970-01-01
  • 2019-03-06
相关资源
最近更新 更多