图像的文件名是否保留在最终的 PDF 中?

图像的文件名是否保留在最终的 PDF 中?

现在想想,这里很少问“是”或“否”的问题。我的问题很简单:

pdflatex使用或生成 PDF 文件时lualatex,原始文件名是\includegraphics以任何方式、形状或形式保留在最终的 PDF 中?

我之所以问这个问题,是因为我使用了一些不太严肃的文件名,但如果我在这些图像中引用的作品的原作者看到了这些名字,我就不得不过于依赖一个我不认识的人来接受这个笑话的能力。

PDF 文件中的文件名不会以纯文本形式显示,文本本身也不会显示,因此这似乎不是一个可靠的测试。我尝试过的任何 PDF 阅读器都没有工具提示或任何其他内容,但这也不能证明任何事情。一旦此文档发布,再去了解我之前不知道的 PDF 文件就太晚了。

附言:如果您能详细说明您的“是”或“否”,我们将非常感激;)


编辑我认为值得一提的是,这个问题甚至可能与那些不认同我这种可疑幽默感的人有关。与 Word 文件中留下的撤消信息类似,查看原始文件名可能会揭示作者的一些他们不想透露且几乎不知道的信息。文件名如failed_attempt-6.pngstudy_plot_retouched.pdf只是stand-in031.jpg一些文件名示例,如果被您文档的忠实观察者发现,这些文件名可能会让您陷入奇怪的境地 ;)

答案1

在某些情况下,答案是“是”:

  • DVI 文件不包含图像,但会引用其名称。DVI 处理器需要并使用这些名称来查找图像。

  • pdfTeX 或 LuaTeX 包含的 PDF 图像:这些引擎将文件名存储在附加键中/PTEX.FileName,并将 PDF 图像的信息字典记住在键中/PTEX.InfoDict。据我所知,只能通过更改源以省略这些条目并重新编译来避免这种情况。

    包含其他图像文件类型时无需添加文件名。但 JPEG 文件可能会包含元数据,并会保留元数据。

  • dvips 包含的图像文件:PostScript 图像文件复制到输出 PostScript 文件中,带有 DSC 标头,%%BeginDocument其中包含原始 PostScript 图像文件的文件名。位图图像也包含在%%BeginDocument图像文件名前加上前缀em:graph

附言:

可以使用不同的工具从 JPEG 文件中删除元数据,请参阅 如何在不重新压缩 JPEG 的情况下删除 EXIF 数据?。 这接受的答案用途exiftool

exiftool -all= image.jpg

另一种方法是使用jpegtranlibjpg

jpegtran -copy none -outfile new-image.jpg old-image.jpg

答案2

如果清理所包含文件的文件名对您来说很重要,那么在任何情况下依赖构建 PDF 的软件来清理文件名是非常危险的。

即使你能 100% 确定你使用的软件绝不,在任何情况下,包括输出 PDF 文件中的源文件名,软件的任何未来更新(即使是小更新)都可能改变该行为,恕不另行通知。

出于您自己的目的,您可以将图像的“彩色”文件名保留在存储它们的位置,但我建议您在构建 PDF 时,使用脚本/流程将源文件复制到具有“净化”文件名的临时区域,然后从那里构建 PDF。是的,这需要做很多额外的工作,但我认为仅出于“安心”的因素,这是值得的。

答案3

稍微重复但快速的证明:

grep -ina spectral Thesis_master.pdf给出:

1482:/PTEX.FileName (./chap_somechap/figures/fig_somechap_spectral_lines.pdf)

和:

\pdfminorversion=5 
\pdfcompresslevel=0

或者:

\pdfminorversion=5 
\pdfcompresslevel=9
\pdfobjcompresslevel=3

(这让我很惊讶——我的粗略阅读让我相信对象字典会被压缩,而 pdf 的大小只有 1/3)

在通过 pdflatex 编译的 Thesis_master.tex 顶部。并且那个 .pdf 确实是我的图表之一(在\included 文件中)。

当然,这是否会被没有怀疑的用户看到则是另一回事。

相关内容