如何将javascript按钮添加到PDF中,将数据保存到(png)文件

How to add a javascript button to PDF that saves data to a (png) file?

本文关键字:数据 保存 png 文件 PDF javascript 按钮 添加      更新时间:2023-09-26

我用python+matplotlib创建PDF图形,我可以添加一个javascript警告框,在打开PDF时显示图中的数据。

我想改变这种行为,在PDF中有一个按钮。您可能在某些形式中见过"打印"按钮。按下此按钮将向用户询问文件名并将硬编码字符串保存到该文件。还有一个按钮可以将PDF保存为PNG(也可以硬编码)。

我的问题是特权。PDF-javascript-api表示禁止静默文件访问,但如果用户发起保存,则允许(例如使用标准保存对话框)。

然而,我不能得到保存对话框方法的工作。没有参数的Adobe的doc.saveAs()不会打开保存对话框,但会抱怨权限不足。

我希望解决方案尽可能便携。所有内容都应该嵌入到PDF(一个文件)中。

编辑:

我发现了一个类似但完全不同的方法:你可以把附件放入pdf,就像按钮一样,可以保存到磁盘:

https://tex.stackexchange.com/questions/117792/listings-copy-to-clipboard-feature

这是我的当前代码:

var nRslt = app.alert({cMsg: "save data?", nType: 3});
app.alert({cMsg: nRslt});
if (nRslt==4){
this.saveAs();
}

按钮是在一个形式,如果结果是'OK' (nType = 4)保存对话框应该打开。生成

NotAllowedError: Security settings prevent access to this property or method.
Doc.saveAs:4:Doc undefined:Open

目标是将按钮从警告框移到文档中,并修改保存的内容。但现在安全设置让我很为难。

代码提供了抛出错误的原因。

doc.saveAs()方法要求一个有效的路径作为参数。而且,为了使用按钮,它需要更高的权限,这意味着您必须创建一个应用程序级别的脚本,该脚本必须安装在应该使用文档的任何地方。

但是还有另一种方法,它是有效的:

if (app.alert({cMsg: "save data?", nType: 3}) == 4){
app.execMenuItem("SaveAs") ;
}

然后打开"保存文件"对话框