acrobat - 如何将pdf导出到xls中的标签命名
问题描述
我有一个包含许多表单域的 PDF 表单。我的要求是将表单数据(其中一些)导出为网络驱动器上的 excel(xls)格式,该驱动器正在被另一个进程(我无权访问或更改代码)拾取并使用以加载到单击 PDF 上的按钮时使用 Acrobat Javascript 的数据库。由于这是一种分布式形式并且网络驱动器很常见,因此设置与数据库的 ODBC 连接没有意义,我也无权这样做。
我遇到的问题是:
- 我需要专门命名工作表,以便该过程正确处理 xls 文件。
- 我需要在不提示用户的情况下将信息保存到网络驱动器,下面的代码就是这样做的。
- 导出到 xls 时,fieldNames 似乎丢失了空格。
到目前为止,我尝试过的任何事情都没有奏效,我所提供的任何参考资料都没有提供此类信息。我可以将数据推送到 .csv 和 .txt 文件中,并尝试创建一个新的报告,如下所示:
var rep = new Report();
var values = "";
...
rep.writeText(values);
var docRep = rep.open("myreport.pdf");
docRep.saveAs("/c/temp/Upload.txt","com.adobe.acrobat.plain-text")
docRep.closeDoc(true);
app.alert("Upload File Saved", 3);
但它只允许 .txt 扩展名,而不是 xls 或 csv 扩展名。我设法以另一种方式导出 csv。
下面是我的一小段代码:
var fieldNames = [];
var result ="";
fieldNames.push("Inn Code");
fieldValues.push('"' + this.getField("Hotel Info Inn Code").value + '"');
fieldNames.push("Business Unit");
fieldValues.push('"' + this.getField("Hotel Info Business Unit").value + '"');
for ( var i=0; i < fieldNames.length; i++ ) {
result += (fieldNames[i] + "\t");
}
for ( var i=0; i < fieldValues.length; i++ ) {
result += (fieldValues[i] + "\t");
}
this.createDataObject({cName: "Upload.xls", cValue: cMyC});
this.exportDataObject({cName: "Upload.xls", nLaunch: 0});
提供的任何帮助或建议将不胜感激!
解决方案
更新(对于遇到此需求的任何其他人)。
我确定使用上述方法的选项卡名称与保存名称相同。我遇到的另一个问题是 xls 文件实际上是一个带有 xls 扩展名的 csv。为了解决这个问题,我决定导出一个我正在格式化的 csv 或一个文本文件,以及一个将文件重新格式化为 xls 的外部进程。
var fieldNames = [];
var fieldValues = [];
var result = '';
// FIELD VALUES
fieldNames.push('"Column Name 1"');
fieldValues.push('\r\n' + '"' + this.getField("Field Name 1").value + '"');
fieldNames.push('"Column Name 2"');
fieldValues.push('"' + this.getField("Field Name 2").value + '"');
for ( var i=0; i < fieldNames.length; i++ ) {
if (i != fieldNames.length-1){
result += (fieldNames[i] + ",");
} else {
result += (fieldNames[i]);
}
}
for ( var i=0; i < fieldValues.length; i++ ) {
if (i != fieldValues.length-1){
result += (fieldValues[i] + ",");
} else {
result += (fieldValues[i]);
}
}
我使用以下内容输出 csv 文件:
this.createDataObject('UploadFile.csv', result);
this.exportDataObject({ cName:'UploadFile.csv', nLaunch:'0'});
问题是这会提示用户将文件保存在哪里,我想要一个静默的特定位置,所以我最终做了以下操作来代替上面的创建和导出对象,以静默输出一个 txt 文件而不提示用户:
var rep = new Report();
rep.writeText(result);
var docRep = rep.open("myreport.pdf");
docRep.saveAs("/c/temp/UploadFile.txt","com.adobe.acrobat.plain-text")
docRep.closeDoc(true);
如果您选择使用此方法,则必须进入编辑 > 首选项 > 安全性(增强),然后在我的情况下选择输出文件夹 (C:\Temp) 以静默输出。
推荐阅读
- flutter - 在下拉列表中选择值后不重建
- java - 在调用 startActivityForResult 后某些设备活动被破坏
- javascript - 显示错误无法在 Microsoft Edge 中读取 null 的属性“拆分”,但在 chrome 上工作正常
- primevue - primevue/config 不存在
- node.js - 无法在 Heroku 上部署后端
- javascript - 使用 vanilla javascript 计算滚动位置
- c# - UWP 自定义 Sqlite 查询到 JSON
- javascript - GitHub工作流程陆续启动
- ios - 如果用户不授予在 iOS14 上跟踪的权限,我是否需要禁用社交媒体登录?
- github - GitHub CICD 的大文件