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

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

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

我想更改行为,使 PDF 中有一个按钮。您可能已经在某些表单中看到了 "print" 按钮。按下此按钮将询问用户文件名并将硬编码字符串保存到该文件。还有一个按钮可以将 PDF 保存为 PNG(也可以硬编码)。

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

但是我无法使用保存对话框方法。没有参数的 Adob​​e 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") ;
}

保存文件对话框随即打开。