我正在为我的大学创建一系列实验练习。因此,我创建了一个 .cls 文件,其中包含每个包并应用我需要的任何格式。所包含的包包括eforms
用于创建可填充字段的包和soul
用于应用突出显示的包。请注意,我使用 XeLaTeX 进行编译。我的主要问题是,当我关闭 pdf 时,Adobe Reader 总是提示“关闭前是否要保存对...的更改?”即使这些字段没有进行任何更改,甚至根本没有任何字段。我该如何在保持字段可见性的同时克服该问题?
一种可能的解决方案是设置包的选项true
。该选项禁用了各种阻止文档符合 PDF/A 标准的属性。这些属性之一是,它被设置为而不是默认的 true。该操作的结果是,除非单击字段,否则它们不可见。使用命令创建的字段也会观察到相同的行为。pdfa
hyperref
NeedAppearances
false
hyperref
另一个可能的解决方案是使用pdfx
带有选项的包a-3b
。此解决方案几乎完美无缺,文档声称符合 PDF/A 标准,所有字段均可见且文档以只读模式打开,因此 Adobe Reader 不会无缘无故地要求保存。不幸的是,与包和突出显示命令pdfx
混淆;不允许突出显示文本。例如,当使用突出显示整个句子时,只有句子内的空格才会显示为突出显示。因此,由于突出显示是强制性的,因此无法应用此解决方案。soul
\hl{}
\hl
另一方面,Foxit Reader 似乎更智能。在默认设置下(无 pdfx 和无 hyperrref 的 pdfa 选项),Foxit 知道何时编辑了字段,然后才要求保存。但是,与 Adobe Reader 相比,Foxit 的性能较差。
因此,我正在思考多种解决方案:
有没有什么方法可以指示 Adobe Reader(可能通过 latex 命令)以只读方式打开文档,就像 Adobe Reader 打开 PDF/A 文档时一样?
由于 PDF/A 格式似乎不是一个坏的视角,是否有任何方法可以支持 PDF/A 文档中的突出显示,使用
soul
包或使用替代方法/包?
编辑:我还尝试用这里的一个电子表格的简单示例进行实验:http://www.math.uakron.edu/~dpstory/acrotex/examples/html/eforms_tst.pdf。原始 pdf 没有提示保存。尽管我使用 pdflatex 编译了附加的源文件,但提示再次出现!我从 MikTeX 控制台更新了所有数据包,但问题仍然存在。
答案1
在文档关闭之前执行的一段 JavaScript(/WC <<...>> % "will close")
使 PDF 不再脏乱):
\documentclass{article}
\usepackage{eforms}
\usepackage{pdfbase} %\pbs_pdfcatalog:n{...}
\ExplSyntaxOn
\AtEndDocument{
\pbs_pdfcatalog:n{
/AA << % additional document actions
/WC << % "will close" trigger event
/S/JavaScript /JS (this.dirty=false;)
>>
>>
}
}
\ExplSyntaxOff
\begin{document}
% Content containing form fields, such as...
Don’t \pushButton[\CA{Push Me}]{myButton}{}{12bp},
I fall down easily.
\end{document}
答案2
将this.dirty=false
命令放入 JavaScript 中\OpenAction
对我来说是有效的:
\documentclass{article}
\usepackage{eforms}
% you can of course have more than this in your OpenAction
\OpenAction{/S/JavaScript/JS(this.dirty=false;)}
\begin{document}
Only text.
\end{document}
此解决方案还有一个好处,就是不必总是清除脏位。也就是说,如果您填写了表单,Acrobat 会要求您保存它。