使用电子表格和 hyperref 包时,Adobe Reader 总是要求保存

使用电子表格和 hyperref 包时,Adobe Reader 总是要求保存

我正在为我的大学创建一系列实验练习。因此,我创建了一个 .cls 文件,其中包含每个包并应用我需要的任何格式。所包含的包包括eforms用于创建可填充字段的包和soul用于应用突出显示的包。请注意,我使用 XeLaTeX 进行编译。我的主要问题是,当我关闭 pdf 时,Adobe Reader 总是提示“关闭前是否要保存对...的更改?”即使这些字段没有进行任何更改,甚至根本没有任何字段。我该如何在保持字段可见性的同时克服该问题?

一种可能的解决方案是设置包的选项true。该选项禁用了各种阻止文档符合 PDF/A 标准的属性。这些属性之一是,它被设置为而不是默认的 true。该操作的结果是,除非单击字段,否则它们不可见。使用命令创建的字段也会观察到相同的行为。pdfahyperrefNeedAppearancesfalsehyperref

另一个可能的解决方案是使用pdfx带有选项的包a-3b。此解决方案几乎完美无缺,文档声称符合 PDF/A 标准,所有字段均可见且文档以只读模式打开,因此 Adob​​e Reader 不会无缘无故地要求保存。不幸的是,与包和突出显示命令pdfx混淆;不允许突出显示文本。例如,当使用突出显示整个句子时,只有句子内的空格才会显示为突出显示。因此,由于突出显示是强制性的,因此无法应用此解决方案。soul\hl{}\hl

另一方面,Foxit Reader 似乎更智能。在默认设置下(无 pdfx 和无 hyperrref 的 pdfa 选项),Foxit 知道何时编辑了字段,然后才要求保存。但是,与 Adob​​e Reader 相比,Foxit 的性能较差。

因此,我正在思考多种解决方案:

  • 有没有什么方法可以指示 Adob​​e Reader(可能通过 latex 命令)以只读方式打开文档,就像 Adob​​e 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 会要求您保存它。

相关内容