繁体   English   中英

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

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

我使用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") ;
}

这样,将打开“保存文件”对话框。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM