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

标签 c# javascript pdf hyperlink itext

我得到了一个大的 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/

相关文章:

ios - 如何使用 UIDocumentPicker 将 pdf 文件导入 TableView 单元格

c# - 如何将 Action 转换为具有相同签名的已定义委托(delegate)?

c# - 单元测试内部属性的反射

c# - 如何在 Win8.1x64 中配置 EmguCV 和 Visual Studio Express 2010

javascript - coffeescript 中的命名空间

php - 使用php将网页打印为pdf文档

c# - .NET 异步流读/写

javascript - jQuery 事件优先级

javascript - 在快速路由的请求处理程序中返回一个值有什么作用吗?

linux - 使用 pdfgrep 搜索字符串并格式化输出