如何使用 MikTeX 上的 XeLaTeX 更改 PDF 制作器元数据

如何使用 MikTeX 上的 XeLaTeX 更改 PDF 制作器元数据

我尝试用 XeLaTeX 更改生成的 PDF 文件的 PDF 制作器,但它始终是“MikTeX-xdvipdfmx (0.7.8)”,如果 PDF 是用 生成的pdflatex,它会按我的意愿改变,有人知道如何用 更改它吗xelatex?我使用的是 MikTeX2.9。

\documentclass{article}
\usepackage[pdfproducer={xelatex}]{hyperref}
\begin{document}
hello
\end{document}

答案1

xdvipdfmx将 XeTeX 生成的文件后期处理成 PDF 的程序会xdv自行定义一个“Producer”字符串,覆盖文档中定义的字符串。

显然没有办法改变这种行为,Mac OS X 上的(过时的)后处理器 xdv2pdf 也会发生这种情况。

如果使用 XeTeX 进行编译而不调用xdvipdfmx,则会在文件中找到请求的“Producer”字符串xdv。事实上,调用

xelatex -no-pdf test.tex && strings test.xdv | grep Producer

test.tex问题中的示例文件在哪里)打印

pdf:docinfo<</Title()/Subject()/Creator(LaTeX with hyperref package)/Author()/Producer(\376\377\000x\000e\000l\000a\000t\000e\000x)/Keywords()>>

答案2

作为egreg 正确指出xdvipdfmx会用其自己的 覆盖您尝试在 PDF 元数据中设置的任何生产者xdvipdfmx (<version number>)。但是,您可以包括所谓的XMP 元数据PDF 文档中除常规元数据目录之外的信息。这为您提供了设置的可能性,如果存在,<pdf:Producer>它将显示在 Adob​​e Reader 中而不是常规字段中。/Producer

目前,可以使用以下某个软件包将 XMP 数据添加到 LaTeX 文档中xmpincl或者hyperxmp前者虽然更灵活,但需要你.xmp自己创建一个文件。此外,由于它仅适用于 pdfTeX,因此不适用于您的配置。

因此,对于您的情况,我建议使用hyperxmp包:它会自动生成必要的结构,并可与许多 TeX 引擎配合使用。由于它使用设置的pdfauthor、 、 ... 字段,因此只需加载它即可生成 XMP 元数据:pdfproducerhyperref\usepackage{hyperxmp}

\documentclass{article}
\usepackage{hyperref}
\usepackage{hyperxmp}
\hypersetup{pdfproducer={xelatex}}
\begin{document}
hello
\end{document}

结果:

Adobe Reader 的“文档属性”对话框

如果你将 XeLaTeX 与memoir课堂,问题memoir、hyperref 和 hyperxmp 之间是否存在有害相互作用?你可能会感兴趣

但是,请记住,这仅适用于支持 XMP 的程序,其他程序仍会显示xdvipdfmx (<version number>)。此外,xdvipdfmx压缩所有 PDF 对象(包括 XMP 元数据),这对 Adob​​e 来说没问题,但可能会使其他程序感到困惑(请参阅手册hyperxmp了解更多信息)。

答案3

我还想删除烦人的“xdvipdfmx (0.xx)”,这里有一个针对 Windows 用户的解决方案(仅限 TeX Live!):

请小心,您必须修补可执行文件,自行承担风险,并先备份文件。

  1. 获取十六进制编辑器(我使用的是免费软件 CFF Explorer)。假设你也使用它,请打开文件执行文件,转到“十六进制编辑器”并单击搜索符号。

  2. 然后粘贴786476697064666D78000000257320282573290050726F6475636572到十六进制搜索框中并单击查找(这相当于xdvipdfmx...%s (%s).ProducerASCII 端)。

  3. 如果您确实想删除 pdfproducer 字符串,请像下图一样用零填充,即不要删除十六进制字符串50726F6475636572(或 ASCII Producer):

    修补可执行文件

  4. 将文件保存在正确的目录中(使用texlive2013它将是.../texlive/2013/bin/win32)。现在您可以使用 XeTeX 编译您的文档。

  5. 每次更新此可执行文件时,您都将被迫再次执行此操作。

笔记:当然,您必须使用 hyperref 包来处理其他元设置,例如 pdfcreator。

相关内容