簡體   English   中英

如何將Javascript附加到PDF超鏈接

[英]How to attach Javascript to a PDF Hyperlink

我有一個嵌入在主頁中的大型PDF,並且應該有自定義javascript命令的交互式鏈接。

這個文檔應該由一些學生維護,並且他們不可能通過所有站點並在原始word文件中更改后設置javascript命令。 所以我希望他們在應該發生動作的單詞中設置超鏈接。

之后我想用iTextSharp刪除超鏈接並改為設置javascript動作。

我可以與HTML通信,正確查找超鏈接,並可以像在這篇文章中更改他們的網址

還嘗試將其添加到注釋操作:

     string destination = AnnotationAction.GetAsString(PdfName.URI).ToString();
     AnnotationAction.Put(PdfName.JAVASCRIPT, new PdfString("this.hostContainer.postMessage(\"" + destination + "\");"));

但它總是在執行javascript之前調用原始超鏈接。 那么如何刪除超鏈接而不會丟失文檔中文本的形成?

您只需將/S的值更改為/JAVASCRIPT ,並將JavaScript命令設置為/JS的值。 然而,不是改變事物,我只是打破原來的行動並創造一個新的行動,只是為了確保沒有任何行李。

下面的前三行來自我鏈接到的原始答案,之后我刪除了URL更改代碼並用JavaScript代碼替換它。 既然你理解了我的其他帖子,那么這也很有意義。

//Make sure this annotation has an ACTION
if (AnnotationDictionary.Get(PdfName.A) == null)
    continue;

//Remove our old action entry just so nothing weird hangs around
AnnotationDictionary.Remove(PdfName.A);

//Create a new action entry
var a = new PdfDictionary(PdfName.A);

//Set it as an action
a.Put(PdfName.TYPE, PdfName.ACTION);

//Set it as JavaScript
a.Put(PdfName.S, PdfName.JAVASCRIPT);

//Set the JavaScript
a.Put(PdfName.JS, new PdfString(@"app.alert('Hello World');"));

//Add it back to the annotation
AnnotationDictionary.Put(PdfName.A, a);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM