如何更改 PHP 中浏览器选项卡中显示的 PDF 元标题?

问题描述 投票:0回答:3

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

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

php pdf-generation
3个回答
3
投票

如果您在文本编辑器中打开 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();

可能性是无限的! (好吧,不是真的,但你明白了)

希望这对您有帮助!


2
投票

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

--title

设置文档标题


0
投票

如果使用 PHP 的 dompdf 包创建 pdf 文件,请执行以下操作:

$dompdf->add_info('Title', 'Your meta title');
$dompdf->render();

来源:如何使用 dompdf 在浏览器选项卡上向 PDF 添加元标题?

© www.soinside.com 2019 - 2024. All rights reserved.