如何使用 hyperref 将 \ChoiceMenu 的默认值设置为组合

如何使用 hyperref 将 \ChoiceMenu 的默认值设置为组合

我无法为\ChoiceMenucombomode 中的 s 指定默认值。我在 Google 上找到的所有信息都表明它应该以这种方式工作(就像它与 一起工作一样\TextField)。

\documentclass[a4paper]{scrartcl}
\usepackage{hyperref}
\begin{document}
\begin{Form}

    \ChoiceMenu[combo,name=testMenu,default=Test]{bla1:}{Test1,Test2}\\
    \\
    \TextField[name=testField,default=Test]{bla2:}
    
\end{Form}
\end{document}

value无论我用还是用,或者两者同时尝试都没关系default

我使用hyperref版本 7.00u 和 MikTex 22.12

交叉发布(https://golatex.de/viewtopic.php?t=24856

答案1

遗憾的是,hyperref 的表单字段实现存在许多错误。在这种情况下,它会对\pdfstringdef值应用两次。这意味着 /Opt 数组包含这些值(这是正确的):

/Opt[(\376\377\000T\000e\000s\000t\0001)
     (\376\377\000T\000e\000s\000t\0002)]

但默认值如下:

 /DV(\376\377\376\377\000\000T\000\000e\000\000s\000\000t\000\0001)
 /V(\376\377\376\377\000\000T\000\000e\000\000s\000\000t\000\0001)     

你可以尝试这个补丁:

\documentclass[a4paper]{scrartcl}
\usepackage{hyperref}
\usepackage{etoolbox}
\makeatletter
\patchcmd\HyField@PDFChoices
  {\xdef\Fld@choices{\Fld@choices/DV(\Hy@gtemp)}}%
  {\xdef\Fld@choices{\Fld@choices/DV(\Fld@default)}}
  {}{\fail}
  
\patchcmd\HyField@PDFChoices
  {\xdef\Fld@choices{\Fld@choices/V(\Hy@gtemp)}}%
  {\xdef\Fld@choices{\Fld@choices/V(\Fld@value)}}
  {}{\fail}
  
\makeatother
\begin{document}


\ChoiceMenu[width=4cm,combo,name=testMenu,value=Test1]{bla1:}{Test1,Test2}


\end{document}

在此处输入图片描述

但请注意,实施过程中可能还存在更多错误。

另一种方法是使用 PDF 管理中的电子表单或表单字段:

\DocumentMetadata{} %load pdf management
\documentclass[a4paper]{scrartcl}
\usepackage{l3pdffield-testphase}
\ExplSyntaxOn
\cs_set_eq:NN\pdffieldchoice\pdffield_choice:n
\ExplSyntaxOff

\begin{document}


\pdffieldchoice{width=4cm,name=test,setfieldflags={Combo},default=test1, values={test1,test2,test3}}

\end{document}

相关内容