如何将Javascript附加到PDF超链接

How to attach Javascript to a PDF Hyperlink

本文关键字:PDF 超链接 Javascript      更新时间:2023-09-26

我得到了一个大的PDF嵌入在一个主页,应该有自定义的javascript命令在它的交互链接。

这个文档应该由一些学生维护,他们不可能在原始word文件更改后遍历所有站点并设置javascript命令。所以我想让他们在word中设置一个超链接,动作应该发生。

之后,我想用iTextSharp删除超链接,并设置一个javascript动作代替。

我可以与HTML沟通,找到正确的超链接,可以改变他们的url,就像这篇文章

还尝试将此添加到注释操作:

     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);