我正在玩一些新的l3pdffield-testphase
。
\RequirePackage{pdfmanagement-testphase}
\DocumentMetadata{uncompress}
\documentclass[varwidth, margin = 5pt]{standalone}
\usepackage{l3pdffield-testphase}
% For some reason, l3color is not in TeXLive, but l3draw defines color macros
\usepackage{l3draw}
\ExplSyntaxOn
\cs_set_eq:NN\pdffieldtextfield\pdffield_textfield:n
% Manual definition taken from xcolor-material
\color_set:nnn{MaterialOrange100}{HTML}{FFE0B2}
\ExplSyntaxOff
\begin{document}
\pdffieldtextfield{V = {Test 1}, name = test1, backgroundcolor = MaterialOrange100, bordercolor = red, width = 4cm}
\end{document}
我理解可填写的表单很大程度上依赖于查看器(chrome/chromium
内部 pdf 查看器做得很好,但会evince
出现段错误)。但 chrome 和 evince 都无法显示 和backgroudcolor
。bordercolor
所以,我的问题是:错误是在查看器端,还是我对新的色彩管理不了解,l3color
或者目前存在错误?
答案1
您需要激活NeedAppearances
选项来告诉 pdfviewer 它应该建立一个“外观”。这可以通过以下方式完成
\pdfmanagement_add:nnn{Catalog/AcroForm}{NeedAppearances}{true}
但NeedAppearances
在 pdf 2.0 中已弃用。替代方法是将外观(=小图形)添加到定义中(不需要 l3draw,您也可以使用 tikz 或其他;在当前的 LaTeX 中,不再需要明确加载 pdfmanagement-testphase,它由 \DocumentMetadata 完成):
\DocumentMetadata{}
\documentclass[varwidth, margin = 5pt]{standalone}
\usepackage{l3pdffield-testphase}
\usepackage{l3draw}
\ExplSyntaxOn
\cs_set_eq:NN\pdffieldtextfield\pdffield_textfield:n
\color_set:nnn{MaterialOrange100}{HTML}{FFE0B2}
\pdffield_appearance:nn{cjorssen/textfield}
{
\draw_begin:
\color_fill:n { MaterialOrange100 }
\color_stroke:n { red }
\draw_path_rectangle:nn { 0 , 0 } { 4cm , 12pt }
\draw_path_use:n {fill}
\draw_path_use:n {stroke}
\draw_end:
}
\ExplSyntaxOff
\begin{document}
\pdffieldtextfield{V = {Test 1}, name = test1, appearance=cjorssen/textfield, width = 4cm}
\end{document}