我在acrobat pro中创建了一个可写的pdf表单。现在,我添加了一个按钮,它必须更改字段值,保存pdf并关闭它。
我决定这样做:
var fieldX = this.getField("xxxxField");
fieldX.value = 1;
app.execMenuItem("Save");
this.closeDoc(true);
但这并没有保存pdf。
我不想要一个确认对话框。我在API中看到了saveAs
函数但是如何获得实际路径包含。当前编辑文件的文件名?或者你有其他方法吗?
答案 0 :(得分:4)
但这并没有保存pdf。
这是因为存在阻止app.execMenuItem("Save");
工作的安全限制。你不能通过JS调用Save。
API中的功能,但如何获得实际路径包含。当前编辑文件的文件名?或者你有其他方法吗?
您可以使用Doc.path
获取当前文档的路径,包括其文件名(Doc.documentFilename
仅为您提供文件名。)
但是,saveAs
也受安全限制,只能在“特权”上下文(批处理或控制台)中调用。所以这也行不通。
简而言之,安全限制将阻止您在不询问用户的情况下保存文档。如果你考虑一下,这是合乎逻辑的。
答案 1 :(得分:2)
保存PDF链接或代码下方使用的数据的客户端代码。这是客户端可信任的功能,您需要将其放入C:\Program Files\Adobe\...\JavaScript\Config.js.
How to Save a PDF with Acrobat JavaScript
1)用于在文件夹级别保存数据的代码。
var mySaveAs = app.trustedFunction ( function(oDoc,cPath,cFlName)
{
app.beginPriv();
var flag=false;
cPath = cPath.replace(/([^\/])$/, "$1/");
if(cPath.indexOf("http://") !== -1 || cPath.indexOf("https://") !== -1)
{
cPath = cPath.replace('http://', "\\\\");
cPath = cPath.replace('https://', "\\\\");
while(cPath.indexOf("/") !== -1)
{
cPath = cPath.replace('/', "\\\\");
}
}
if(cPath.indexOf(":") !== -1)
{
cPath = cPath.replace(":","@");
}
try{
oDoc.saveAs(cPath + cFlName);
flag = true;
}catch(e){
app.alert("Error During Save");
}
app.endPriv();
return flag;
});
2)在SharePoint上保存数据的代码。
var mySaveAs = app.trustedFunction ( function(oDoc,cPath,cFlName)
{
app.beginPriv();
var flag=false;
try{
app.execMenuItem("Save");
flag = true;
}catch(e){
app.alert("Error During Save");
}
app.endPriv();
return flag;
});