gpt4 book ai didi

c# - 如何将 Javascript 附加到 PDF 超链接

转载 作者:行者123 更新时间:2023-11-30 12:41:46 27 4
gpt4 key购买 nike

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

本文档应该由一些同学维护,他们不可能在原始word文件发生变化后遍历所有站点并设置javascript命令。所以我希望他们在应该发生操作的地方设置超链接。

之后我想用 iTextSharp 删除超链接并改为设置 javascript 操作。

我可以与 HTML 通信,正确找到超链接并且可以像这样更改它们的 url post

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

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

关于c# - 如何将 Javascript 附加到 PDF 超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186449/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com