通过使用多个文本框中的值自动填充文件名,需要帮助保存PDF文件(使用iTextSharp)。
我可以通过输入文件名来保存文件,但我想要的是在点击保存按钮时自动填充名称。
对于例如:![CID1CON4INV125][1]
(CID
代表Customer ID
1
,CON
代表Contract ID
,即4
},INV
代表Invoice ID
,即125
)
这是我到目前为止所做的。
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "PDF Files|*.pdf";
dlg.FilterIndex = 0;
if (dlg.ShowDialog() == DialogResult.OK)
{
string fileName = dlg.FileName;
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 42f, 35f);
PdfWriter.GetInstance(pdfDoc, new FileStream(fileName, FileMode.Create));
pdfDoc.Open();
}
它应该从文本框中获取值(由SQL数据填充)ю
答案 0 :(得分:0)
我已经检查过JavaScript的Acrobat参考。
我找到了以下信息:
<强> 1 强>
每个PDF文档都有一个Doc
对象(this
)。 Doc
方法有saveAs
方法,允许您传递文件名:
this.saveAs({
cPath: "/c/customer/invoices/myDoc.pdf",
bPromptToOverwrite: true,
});
但是,此方法的使用受到限制。来自规范:此方法只能在批处理或控制台事件期间执行和此方法在Adobe Reader中可用于具有“保存使用权”的文档。我怀疑您的文档具有使用权限,特权方法等...因此:这不是您的选择。 (如果您不知道哪些使用权利,则您的文档没有。)
我对此进行了测试,当我打开JavaScript调试器时,我得到了:
NotAllowedError:安全设置阻止访问此属性或方法。 Doc.saveAs:1:字段保存:鼠标向上
这与JavaScript引用告诉我的内容一致。
<强> 2 强>
有一个名为app
的{{1}}方法。您可以使用它打开“另存为”菜单,如下所示:
app.execMenuItem()
我没有找到允许您传递文档新文件名的此方法的任何参数。
第3 强>
有一个属性app.execMenuItem("SaveAs");
,其中包含Doc引用的文档的基本文件名(带扩展名)。此属性为只读,因此您无法更改它,您只能查询文件名:
documentFileName
Mohammad Haneef Ahmad的更新:
console.println('"The file name of this document is '
+ this.documentFileName +'."');
注释代码实际上完成了工作并将文件保存在目录中,但是当使用另存为对话框尝试相同的操作时会出现问题,文件名在保存为对话框时不会自动填写
Bruno Lowagie的补充答案:
您正在更改问题。当你说:我想要一个触发“SaveAs”的按钮并根据字段的值提出文件名时,听起来好像你想在PDF文件中提供这样一个按钮。强>
但是:您显示的代码是关于PDF文件外的按钮!
Mohammad Haneef Ahmad的更新:
我的不好我可能没有正确地提出我的问题......现在问题被理解是有解决方案。
布鲁诺更新:
你现在说已经理解了问题。这不是真的。我仍然不知道你在问什么。看到我的评论:不幸的是,很难说出你的意思。你在说谜语。
Mohammad Haneef Ahmad的更新:
我很难找到解决这个问题的方法,我试图在Windows窗体应用程序中使用iText Sharp保存PDF文件但是每当我尝试保存文件时,我必须手动输入文件名,我想要什么要做的是,当出现“另存为”对话框时,文件名应通过将来自3个不同文本框的值连接为文件名来自动填充。
例如。文件名:CID1CON4INV125(CID代表客户ID为1,CON代表合同ID为4,INV代表发票ID为125且是唯一的)
上面的例子可能非常繁琐,要记住我是否每次都要选择一个文件名,有没有办法可以通过从txtCustomerID.Text和txtContractID.Text和txtInvoiceID.Text获取文件名来自动化这个过程并准备要保存为PDF的文件名。
布鲁诺的回答:
你的问题是错的:它与PDF有很强的关系 。这是关于在C#中创建一个SaveAs对话框并用默认文件名填充它。您应该创建一个新问题并删除对PDF和iTextSharp的所有引用!
实际上,这样的问题可能会被重复关闭: