如何将Javascript附加到PDF超链接
本文关键字:PDF 超链接 Javascript | 更新日期: 2023-09-27 18:08:15
我得到了一个大的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);