【问题标题】:Why is my field not defined in the setAction method in Javascript for Acrobat?为什么我的字段没有在 Javascript for Acrobat 的 setAction 方法中定义?
【发布时间】:2020-06-17 11:50:13
【问题描述】:

我在 PDF 编辑器中使用 Javascript。

我正在使用这个参考https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf

当在该字段上触发 mouseEnter 事件时,我正在尝试对该字段设置操作。 下面是我的代码。

var myDoc = app.newDoc(); // Create a blank doc
var Bbox = myDoc.getPageBox("Crop"); // Get crop box
var inch = 72;
// Add a text field at the top of the document
var f = myDoc.addField("Name.Last", "text", 0,[ inch, Bbox[1]-inch, 3*inch, Bbox[1]- inch - 14 ] );
f.setAction("MouseEnter", "f.textColor = color.yellow"); // Add an action

但是我得到以下错误:

======== Field : mouse enter ========
[ Line: 00000 { ReferenceError } ] : f is not defined

我以为我在这里使用这一行定义了字段 f:

var f = myDoc.addField("Name.Last", "text", 0,[ inch, Bbox[1]-inch, 3*inch, Bbox[1]- inch - 14 ] );

为什么错误提示我的字段未定义?

【问题讨论】:

  • 你有Bbox的值吗?
  • 是的 > [0, 792, 612, 0]

标签: javascript pdf acrobat acrobat-sdk


【解决方案1】:

Adobe Reader 无法修改 PDF 文件的页面内容。 Doc.addField() 和 Field.setAction() 都尝试对 PDF 进行 Reader 无法进行的更改。

您收到错误是因为未添加该字段,因此 f 未定义。

您也无法使用 Reader 创建新的 PDF 文件。

此代码可能会在 Adob​​e Acrobat Pro 中成功运行,尽管我尚未对其进行测试。

【讨论】:

  • 啊,抱歉。我认为我对“阅读器”的使用具有误导性。我正在使用 Foxit PhantomPDF。我相信我引用的 Javascript 参考对 Foxit PhantomPDF 和 Acrobat 都是有效的,因为我已经在 Foxit PhantomPDF 的参考中测试了很多其他代码并且它工作正常。
  • 您不能指望 PhantomPDF 以与 Acrobat Pro 相同的方式运行 Acrobat JavaScript。我在 Acrobat Pro DC Build: 20.9.20067.384717 中测试了您的代码,它运行良好。
  • Followup... 该代码也适用于 PhantomPDF 商业版:10.0.0.35798
  • 谢谢,根据您的消息,我尝试完全重新启动 PhantomPDF,果然,关闭和打开某些东西的魔力再次起作用,代码现在可以正常工作了。不知道是什么导致了最初的错误,但感谢您帮助我解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-02
  • 1970-01-01
  • 2019-12-22
  • 2019-07-03
  • 2017-01-17
相关资源
最近更新 更多