求助:PDFmarks创建的PostScript表单按钮重置功能失效问题
修复PostScript PDFmarks中的重置表单按钮问题
我来帮你排查这个重置按钮失效的问题——你写的PDFmarks代码里有几个关键问题,导致Acrobat蒸馏后无法正常触发重置动作。咱们一步步来修正:
你的代码里的核心问题
- 重复定义了
/A(动作)属性:你写了两次/A << /S /ResetForm >>,后一次会覆盖前一次,而且ResetForm动作必须明确指定要重置的字段,否则Acrobat不知道该重置哪些内容。 - 字段标志
/F重复赋值:先写了/F 4又写/F 1,后一次会覆盖前一次,导致你想要的“可见但不可打印”的效果没实现(正确的标志位应该是/F 9,即1(可见)+8(不可打印))。 - 缺少ResetForm的必要参数:默认情况下,ResetForm需要
/Fields参数来指定目标字段,或者用/Fields null重置所有表单字段。
修正后的完整代码
[ /_objdef {field5} /Subtype /Widget /Rect [213.111 434.362 243.111 416.362] /F 9 % 1(可见) + 8(不可打印),实现你要的visible but not printable /V (Select Option) /T (Clear) /TU (Clear Form) /FT /Btn /DA (/TiRo 10 Tf 0 g ) /MK<< /BC [ 1 0.5 0.5 ] /BG [ 0.75 0.45 0.75 ] /CA (Clear) /AC (Done!) /R 180 >> /BS<< /W 3 /S /I >> /A << /S /ResetForm /Fields null % 重置所有表单字段;如果只想重置特定字段,改成[ {field1} {field2} ]这样的数组 /Action /ResetForm % 明确指定动作类型(部分Acrobat版本需要这个) >> /Ff 65536 % 标记为PushButton /ANN pdfmark [ /Obj {field5} /StOBJ pdfmark
关键修改说明
- 合并并修正
/F标志:用/F 9替代重复的/F 4和/F 1,确保字段可见且不可打印。 - 完善ResetForm动作:在
/A字典里添加/Fields null(重置所有字段),如果需要只重置特定字段,把null换成字段名数组,比如[ {username} {email} ]。 - 移除重复的
/A定义:只保留一次完整的动作定义,避免覆盖。
你把修正后的代码替换原来的部分,再用Acrobat蒸馏试试,应该就能正常触发表单重置了。
内容的提问来源于stack exchange,提问作者Surjeet
相关产品推荐
相关产品推荐

