是否可以从编译的 PDF 中检索定义的 LaTeX 命令的名称?

是否可以从编译的 PDF 中检索定义的 LaTeX 命令的名称?

我知道编译后的 PDF通常不使用变通方法就无法反编译回 LaTeX。但是,我担心 LaTeX 中提供的部分信息仍然可以从 PDF 中检索。

具体来说,是如下的情况:

\documentclass{article}

\def\foopseudonym{bar}

\begin{document}

The pseudonym for the first respondent is \foopseudonym

\end{document}

我想\foopsuedonym在撰写文章时使用来跟踪假名指的是谁,但我不希望任何人通过反编译 PDF 找到我定义的命令的名称。我需要担心吗?

答案1

嗯,这要看情况。可以获取源代码并添加到 PDF 中。作为概念证明(这需要当前的 LaTeX):

\DocumentMetadata{uncompress,testphase={phase-III,math}}
\documentclass{article}

\def\foopseudonym{bar}

\begin{document}

The pseudonym for the first respondent is 

$ \foopseudonym = x $

\end{document}

如果你打开 PDF,你会看到:

stream
LaTeX formula starts \begin {math} \foopseudonym = x \end {math} LaTeX formula ends 
endstream

答案2

基本上,创建 PDF 的过程是不是编译后无法进行反编译。PDF 是一种描述文档输出的格式,即您在纸张上(无论是真实纸张还是虚拟纸张)放置的实际字母和图像。尽管出于实际原因,几乎没有任何程序会这样做,但甚至不需要这些字母按顺序排列 — 您可以完美地创建一个 PDF,将所有字母“a”打印在页面上的任何位置,然后继续打印所有 b,然后是所有 c,依此类推。

正如其他人所指出的,有一些方法可以通过使用特殊功能来包含一些代码,但这可能是您必须努力才能做到的事情。这在正常使用中不会发生。但如果您真的很偏执 :-),您必须使用某种 PDF Explorer,它可以让您从程序员的角度查看里面的内容。即便如此,除非您做了一些额外的事情,否则将只有字体、文本和图像(位图或矢量),没有其他内容(不包括常规元数据,如文档标题、作者、创建日期和创建 PDF 的软件,但我认为您指的不是这些,实际上,这些都可以用肉眼用任何简单的文本编辑器直接在 PDF 文件中读取)。

答案3

如果这是真的重要的是确保没有问题,您可能需要对 PDF 进行后期处理。

我的建议是简单地重新处理它以创建一个新的 PDF:

  • 使用您最喜欢的操作系统并将其打印为 PDF 文件。您可能需要进行一些实验才能找到完全符合您要求的组合。现代版本的 MacOS 和 Windows 都内置了此功能。
  • 打印到 HP PCL 文件(其专有语言)并将其重新转换回 PDF。
  • 使用 Adob​​e Distiller 或 Ghostscript 等同类软件来创建具有所需属性的版本。

相关内容