我尝试用 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>
它将显示在 Adobe Reader 中而不是常规字段中。/Producer
目前,可以使用以下某个软件包将 XMP 数据添加到 LaTeX 文档中xmpincl
或者hyperxmp
前者虽然更灵活,但需要你.xmp
自己创建一个文件。此外,由于它仅适用于 pdfTeX,因此不适用于您的配置。
因此,对于您的情况,我建议使用hyperxmp
包:它会自动生成必要的结构,并可与许多 TeX 引擎配合使用。由于它使用设置的pdfauthor
、 、 ... 字段,因此只需加载它即可生成 XMP 元数据:pdfproducer
hyperref
\usepackage{hyperxmp}
\documentclass{article}
\usepackage{hyperref}
\usepackage{hyperxmp}
\hypersetup{pdfproducer={xelatex}}
\begin{document}
hello
\end{document}
结果:
如果你将 XeLaTeX 与memoir
课堂,问题memoir、hyperref 和 hyperxmp 之间是否存在有害相互作用?你可能会感兴趣
但是,请记住,这仅适用于支持 XMP 的程序,其他程序仍会显示xdvipdfmx (<version number>)
。此外,xdvipdfmx
压缩所有 PDF 对象(包括 XMP 元数据),这对 Adobe 来说没问题,但可能会使其他程序感到困惑(请参阅手册hyperxmp
了解更多信息)。
答案3
我还想删除烦人的“xdvipdfmx (0.xx)”,这里有一个针对 Windows 用户的解决方案(仅限 TeX Live!):
请小心,您必须修补可执行文件,自行承担风险,并先备份文件。
获取十六进制编辑器(我使用的是免费软件 CFF Explorer)。假设你也使用它,请打开文件执行文件,转到“十六进制编辑器”并单击搜索符号。
然后粘贴
786476697064666D78000000257320282573290050726F6475636572
到十六进制搜索框中并单击查找(这相当于xdvipdfmx...%s (%s).Producer
ASCII 端)。如果您确实想删除 pdfproducer 字符串,请像下图一样用零填充,即不要删除十六进制字符串
50726F6475636572
(或 ASCIIProducer
):将文件保存在正确的目录中(使用
texlive2013
它将是.../texlive/2013/bin/win32
)。现在您可以使用 XeTeX 编译您的文档。每次更新此可执行文件时,您都将被迫再次执行此操作。
笔记:当然,您必须使用 hyperref 包来处理其他元设置,例如 pdfcreator。