2016-08-18 139 views
1

我正在为Adobe Acrobat编写一个简单的javscript脚本,它通过PDF查找可通过工具>分析>对象数据工具选择并可在“模型树”中浏览的类型的“对象”,然后查看他们的属性,并使用属性数据进行转换。我可以在Acrobat脚本中访问模型树对象数据/属性吗?

我已经通过docs,但找不到任何相关的东西。有可能我要找的名称不同。最近我能找到的是dataObjects and the Data class,但这些似乎围绕PDF文件夹中的附加文件,这是不同的。

如何通过与Analyze> Object Data Tool一起使用的脚本访问属性控制交互式对象的类型?


术语“对象”,“数据”,“属性”和“模型”是如此通用并没有帮助。为了避免疑问,这是我想通过脚本访问的对象数据/属性的类型,如Acrobat UI中所示。我想我的脚本通过顶部左侧面板上的项目重复,那么对于每个人,访问他们的属性的属性和值像在左下图:

enter image description here

这个例子是基于地理参考地图上PDF以及PDF的这一特性经常用于由GIS应用程序(如ArcGIS和MapInfo)生成的PDF中:

回答

2

这是可能的。 Acrobat和Reader中的3D播放器实际上是一个单独的JavaScript引擎,但您可以将文档JavaScript桥接到3D JavaScript并从模型中获取信息。您需要查看链接到下方的文档。这是旧的,但从那时起3D JavaScript没有改变,所以它仍然有效。

http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_3d_api_reference.pdf

在模型树中每个节点的属性被存储在网格对象的属性metadataString的XML字符串。您可以通过访问文档中的3D上下文来获取它。假设您只有一个3D注释,并且它在第一页上,您将使用下面的代码。您可以通过名称或索引来获取网格。只需将getByName()替换为getByIndex()即可。通常,节点名称与模型树中显示的名称相同,但并非总是如此。

var metadata = this.getAnnots3D(0)[0].context3D.scene.meshes.getByName("mesh name").metadataString 

然后,您需要使用Acrobat的XMLData对象中的方法将字符串转换为XML对象。从那里你可以使用XPath来获取属性。

+0

从2015年5月起,还有一个Acrobat DC for Java版本的Acrobat 3D注释API参考。尽管如此,我不记得它的URL。 –

相关问题