是否可以嵌入(附加)受密码保护的 PDF 文件?

是否可以嵌入(附加)受密码保护的 PDF 文件?

情况如下,对于某些较短的 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 安全设置

现在,您可以根据编辑器和操作系统使用自动化功能实际执行此“中间”步骤(通过其他程序加密并将其附加到 PDF)。例如,技术中心允许设置编译(或构建)配置文件允许批量后期制作。然后,您可以使用(免费,命令行)将源的加密版本附加到输出 PDFPDF 工具包- 它提供了一个attach_files选项。如果您在 Linux 上运行,makefile 可能也能做同样的事情。

相关内容