我正在尝试使用 hyperref 创建 PDF 表单。除了复选框之外,表单看起来不错。在 Adobe Reader 和 Preview.app 中,复选框均未显示。如果我将鼠标悬停在复选框上,我的光标会发生变化,如果我单击它,我甚至可以看到复选框和复选标记的短暂闪烁。两者都会立即消失。
在 Windows 上的 Adobe Reader 中,复选框最初是不可见的,但第一次单击时就会显示出来。在 FoxIt Reader 中,它们完全按预期工作。
这是一个最小工作示例,我从教程中复制而来:
\documentclass{memoir}
\usepackage[left=25mm,top=25mm,bottom=10mm,right=10mm]{geometry}
\usepackage{graphicx}
\usepackage{color}
\usepackage[
xetex,a4paper=true,colorlinks=true,
pdftitle={Key form},pdfsubject={Key},
pdfauthor={ich},pdfpagemode=UseNone,pdfstartview=FitH,
pagebackref,pdfhighlight={/N}
]{hyperref}
\begin{document}
\section*{Request for a key}
\begin{Form}
Front door: \CheckBox[name=ht]{}\\
\end{Form}
\end{document}
以下是输出的链接:http://dl.dropbox.com/u/2126832/ex0001.pdf
我正在使用 XeTeX,但我尝试使用 PDFTeX 进行编译时遇到了同样的问题。我最近升级到了 OS X 10.7 (Lion) 和 Texlive 2011。
我花了很多时间在 Google 上搜索这个问题,但没有在其他地方找到相关内容。如能得到任何帮助我将不胜感激。
编辑:为了帮助诊断问题,我应该注意电子表格手册工作正常。(我也尝试使用 eforms,但没有任何效果。这并不奇怪,因为 eforms 使用了 hyperref。)
答案1
我准备了两个 pdf 文档,其中包含进一步简化的输入文件
\documentclass{article}
%\pdfminorversion=1
\usepackage[unicode=true, verbose]{hyperref}
\begin{document}
\section{Request for a key}
\begin{Form}
Test: \CheckBox{}
\end{Form}
\end{document}
我用 10.6 版电脑准备了一份文档,用 10.7 版电脑准备了一份文档,两者都使用了 TL2011 和 LuaLaTex。如果在文本编辑器中打开,输出文件看起来完全相同。我曾经diff -a lion.pdf snow.pdf
显示更多细节,并得到了
218,219c218,219
< /CreationDate (D:20111027072803+02'00')
< /ModDate (D:20111027072803+02'00')
---
> /CreationDate (D:20111027091652+02'00')
> /ModDate (D:20111027091652+02'00')
250c250
< /ID [<1E45A68F3C173651B121446FAD778EB3> <1E45A68F3C173651B121446FAD778EB3>]
---
> /ID [<0CCBB711863F46770F8A748517E79A96> <0CCBB711863F46770F8A748517E79A96>]
因此这些文件实际上是完全相同的。
请注意,即使在 Snow Leopard 和 TL2011 上准备的文件也无法在 Snow Leopard 上使用 Adobe Acrobat Pro 9 显示格式。在同一台计算机上预览没有问题。
我可以得出这样的结论:
- TL 没有准备正确的 pdf 文件,这个错误现在以某种方式显现出来了
- pdf 查看器无法正确显示 pdf 文件,这种情况很可能发生,但不仅限于 Lion。
答案2
我相信这是 hyperref 中的一个真正的错误;对我来说,关键的提示是,如果我通过 运行 pdf pdf2ps
,我会得到
**** Error: Required entry /BBox not present in Form.
Output may be incorrect.
Output may be incorrect.
**** Error: Stream object is missing the stream data.
如果我将 ps 转换回 pdf ps2pdf
,则没有复选框。
有趣的是,当我在 Adobe Reader 中打开 PDF 时,它会询问我是否要在关闭时保存更改(即使我没有做任何更改)。如果我这样做,则复选框在任何地方都会正常显示,并且通过文件往返.ps
会保留复选框。