2016-08-18 38 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。 –

相關問題