消除/编辑 pdfLaTeX 添加的 PDF 属性

消除/编辑 pdfLaTeX 添加的 PDF 属性

有没有办法更改添加到 PDF 文档的属性?例如,当我转到特性在 Acrobat 面板中,我看到:

应用程序:带有 hyperref 包的 LaTeX

PDF 制作器:PdfTeX-1.40.11

PTEX.Fullbanner:这是 pdfTeX 版本 3.1415926-1.40.11-22(TeX Live 2010)

这些是我在我的 Acrobat 版本中唯一能看到的,但 PDF 中可能有更多嵌入的内容。

我想知道是否有设置可以控制嵌入在 PDF 文档中的属性值。我记得有一次 Acrobat 在其中嵌入了登录用户 ID,但我在 Mac 上没有看到。我想自定义所有这些属性,除非它们是必要的(我假设字体列表是正确显示 PDF 所必需的)。

很可能有一种方法可以使用 Acrobat Pro 来做到这一点,但这需要我对每个文件分别执行此操作。

答案1

至少有两种方法可以做到这一点。


选项1:在制作 LaTeX 文档并使用hyperref包裹。 在手册它提到你可以设置以下文档属性信息

  • 标题字段(通过pdftitle
  • 作者字段(通过pdfauthor
  • 主题字段(通过pdfsubject
  • 创建者字段(通过pdfcreator
  • 生产者字段(通过pdfproducer
  • 关键字字段(通过pdfkeywords
  • 以及其他许多人。

为此,你可以使用

\documentclass{minimal}
\usepackage[%
  pdftitle={My Title},%
  pdfauthor={My Author},%
  pdfsubject={My Subject},%
  pdfproducer={My Producer},%
  pdfkeywords={keyword1,keyword2}]{hyperref}
\begin{document}
  This is just some dummy text.
\end{document}

选项 2:您可以在后期制作过程中通过以下方式修改/更新 PDF 文档属性:PDF 工具包使用下面的命令行执行:

pdftk <inputfile> update_info <pdf_info> output <outputfile>

该文本文件<pdf_info>看起来像您想要更新的每个字段的键值列表。

答案2

您可以使用以下方式更改创建者和制作者字段hyperref

\documentclass{article}

\usepackage{hyperref}

\hypersetup{
    pdfcreator={Hello},
    pdfproducer={World}
}

\begin{document}

Hello World

\end{document}

第三个字段更有趣,需要进一步研究。它当然可以在 PDF 文件中看到,但 Evince 并pdfinfo没有显示它……该字段也在pdfTeX 手册

让我们看一下 pdfTeX 源代码。src/texk/web2c/pdftexdir/pdftex.web我们看到

pdf_str_entry_ln("PTEX.Fullbanner", pdftex_banner);

@d pdfTeX_banner=='This is pdfTeX, Version 3.1415926',pdftex_version_string

在哪里

@d pdftex_version_string=='-1.40.11' {current \pdfTeX\ version}

pdf_str_entry_ln直接输出其参数:

procedure pdf_str_entry(s, v: str_number); {print out an entry in
dictionary with string value to PDF buffer}

procedure pdf_str_entry_ln(s, v: str_number);
begin
    if v = 0 then
        return;
    pdf_str_entry(s, v);
    pdf_print_nl;
end;

因此,文本是硬编码的,并且您在 TeX 端无法使用此字段 - 除非您编辑源代码。

相关内容