![附图中的标题取代了元数据](https://linux22.com/image/429677/%E9%99%84%E5%9B%BE%E4%B8%AD%E7%9A%84%E6%A0%87%E9%A2%98%E5%8F%96%E4%BB%A3%E4%BA%86%E5%85%83%E6%95%B0%E6%8D%AE.png)
我想编辑最终 pdf 文件的标题。以下这个帖子我得到了以下代码,它运行完美
\documentclass{article}
\usepackage{hyperref}
\hypersetup{pdftitle={Title I want}}
\usepackage{graphicx}
\begin{document}
This file is not completely empty.
%\includegraphics[width=0.7\textwidth]{fignu05.eps}
\end{document}
编译是通过latex+dvips+ps2pdf完成的。
当我取消注释 includegraphics 行时,问题就出现了。由于某种原因,图片的元数据(即“Test.eps”)删除了“我想要的标题”,我不知道如何解决这个问题。
我尝试将 hypersetup 命令放在 includegraphics 命令之后,但这并不能解决问题。
任何帮助将不胜感激。
编辑:回答下面的评论,我同意图片在这里。
答案1
在 PS 到 PDF 的转换过程中,元数据被插入到 PDF 输出中/DOCINFO
pdfmark
。
可以临时重新定义命令pdfmark
以从操作数堆栈中清除其所有参数。我们在此专门针对执行此操作,/DOCINFO
pdfmark
以防止包含的 EPS 用其元数据污染主 PDF。其他pdfmarks
(例如用于链接创建)不受影响。
\documentclass{article}
\usepackage{hyperref}
\hypersetup{pdftitle={Title I want}}
\usepackage{graphicx}
\newenvironment{NoDocinfo}{%
\special{ps: save /pdfmark {dup /DOCINFO eq {cleartomark}{systemdict /pdfmark get exec} ifelse} def}%
\ignorespaces%
}{%
\unskip%
\special{ps: restore}%
}
\begin{document}
\begin{NoDocinfo}
\fbox{\includegraphics[width=0.7\textwidth]{fignu05.eps}}
\end{NoDocinfo}
\end{document}
答案2
好吧...Ulrike Fischer 的评论建议我尽量避免使用 pdflatex,于是我照做了这个帖子这对我的问题来说很好。
答案3
问题在于图形还包含填充信息字典的指令,并且比来自 hyperref 的代码更晚。
使用新的 LaTeX PDF 管理代码(目前处于测试阶段,需要一个非常新的 tex 系统),它将起作用,因为此代码在很晚的时候才添加信息字典:
\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{uncompress}
\documentclass{article}
\usepackage{hyperref}
\hypersetup{pdftitle={Title I want}}
\usepackage{graphicx}
\begin{document}
This file is not completely empty.
\includegraphics[width=0.7\textwidth]{fignu05.eps}
\end{document}
一个有点黑客的替代方法是使用 expl3 后端命令来覆盖图形条目:
\documentclass{article}
\usepackage{hyperref}
\usepackage{graphicx}
\hypersetup{pdftitle={Title I want}}
\begin{document}
This file is not completely empty.
\includegraphics[width=0.7\textwidth]{fignu05.eps}
\ExplSyntaxOn\makeatletter
\exp_args:Nnx
\__pdf_backend_info_gput:nn{Title}{(\@pdftitle)}
\ExplSyntaxOff
\end{document}