使用文本框中的值通过iTextSharp保存PDF文件

时间:2015-02-02 19:25:45

标签: c# winforms pdf itextsharp

通过使用多个文本框中的值自动填充文件名,需要帮助保存PDF文件(使用iTextSharp)。

我可以通过输入文件名来保存文件,但我想要的是在点击保存按钮时自动填充名称。

对于例如:![CID1CON4INV125][1]CID代表Customer ID 1CON代表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数据填充)ю

1 个答案:

答案 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的所有引用!

实际上,这样的问题可能会被重复关闭: