繁体   English   中英

如何更改出现在 PHP 浏览器选项卡中的 PDF 元标题?

[英]How can I change a PDF's meta title that appears in the browser tab in PHP?

我有一个用 wkhtmltopdf 生成的 PDF,但它没有标题。 因此,浏览器将 URL 的最后一部分用于选项卡标题和 PDF 预览标题。 我想更改出现在这些地方的标题。

我知道这是由 PDF 文档的元标题定义的,但是如何在 PHP 中更改它?

没有元标题的 PDF 示例

如果您在文本编辑器中打开 PDF,您会注意到元标题在第一部分中定义,由<<>>分隔。 它看起来像下面这样:

/Title (My Document Title)

或者:

/Title (��)

如您所见,该模式非常简单。 您所要做的就是使用相同的模式替换该行,除了括号之间的标题。

尽管这很可能不是最干净或最有效的解决方案,但简单的preg_replace可以很好地解决此类问题。

以下是使用现有 PDF 的示例:

$filename = '/my/path/to/file.pdf';
$content = file_get_contents($filename);
$title = str_replace(['(', ')'], '', $title);
$title = utf8_decode($title); # Deals with accented characters and such
$updatedContent = preg_replace('/\/Title \(.*\)/', '/Title (' . $title . ')', $content);

如果文件中缺少元标题,您可以简单地将它插入到它本来的位置。

之后,您可以对更新的数据执行任何您喜欢的操作。 您可以将其保存回文件以更新现有的 PDF:

file_put_contents($filename, updatedContent);

或者,您可以向用户显示 PDF:

header('Content-type: application/pdf');
header('Content-disposition: inline; filename="my-updated-file.pdf"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
echo $updatedContent;
die();

可能性是无止境! (嗯,不是真的,但你明白了)

希望这是有帮助的!

wkhtmltopdf 有命令行参数来设置文档的各个方面,包括标题。

--title

设置文档标题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM