情况如下,对于某些较短的 latex 文件,我将源代码嵌入 PDF 本身。如果我需要修改 PDF 的源代码,这可以在紧急情况下节省我的时间,而不必寻找原始源代码(可能在另一台很远的计算机上)。这不是什么高深的科学,我只需这样做:
\documentclass{article}
\usepackage{embedfile}
\embedfile{myself.tex}
但是在某些情况下,我不希望其他拥有 PDF 的人查看 Latex 源代码(例如,因为所有的评论。想想简历)
我当然可以加密嵌入的文件
zip myself.zip --encrypt myself.tex
并使用
\embedfile{myself.zip}
(注意:实际上我必须将扩展名 .zip 更改为其他名称,因为 Acrobat 拒绝打开嵌入的 zip 文件)
但每次我都必须运行外部命令(并且还遭受交互式 zip 密码输入的困扰)。
如果存在这样的事情,那将是理想的,但我也愿意接受其他可能性:
\embedfile[password=aaa]{myself.tex} %not working code
我不需要终极的安全性,而只需要一层嵌入文件的隐藏。
这对于嵌入其他相关材料(如原始图形或原始数据表等)也很有用,而不仅仅是 tex 源。
答案1
似乎没有像 TeX 文件的原生加密(二进制或文本)这样的东西。一个选项是在编译之前发出命令或者shell 命令,以便在嵌入文件之前对其进行加密。经过进一步研究,我发现确实有方法可以非交互地指定密码
\documentclass[]{article}
\usepackage{embedfile}
\immediate\write18{zip -j -e -P mypassword -r \jobname.tex.zeep \jobname.tex}
\embedfile{\jobname.tex.zeep}
\begin{document}
bla
\end{document}
或者
$ zip -j -e -P mypassword -r $0.zeep $0
$ pdflatex -shell-escape $0
zip
也可以替换为openssl des3 -salt -pass pass:mypassword -in $0 -out $0.de3;
zip
更好,因为它只需双击附件即可从 PDF 阅读器打开。我还使用扩展 zeep 来避免愚蠢的电子邮件过滤器。
这不是非常安全的,因为密码是可见的(对于仅接收 PDF 的人来说仍然不是可见的),希望它是一个随时容易记住的简单密码。
感谢 Paulo 的启发。
答案2
我经常使用 将源代码(和其他相关文档)附加到已编译的 PDF 中embedfile
,因此我绝对可以理解这种“奢侈”。据我所知,保护 PDF 中的单个附件是不可能的。甚至Adobe Acrobat允许对附件进行这种安全保护。虽然这可能是旧闻,但您可以使用以下方法保护整个 PDF杂技演员的安全功能。这些是可用性(在读者):
现在,您可以根据编辑器和操作系统使用自动化功能实际执行此“中间”步骤(通过其他程序加密并将其附加到 PDF)。例如,技术中心允许设置编译(或构建)配置文件允许批量后期制作。然后,您可以使用(免费,命令行)将源的加密版本附加到输出 PDFPDF 工具包- 它提供了一个attach_files
选项。如果您在 Linux 上运行,makefile 可能也能做同样的事情。