使用 ASP.NET MVC 5 中的值填充 PDF 字段
Filling PDF Fields with values in ASP.NET MVC 5
我想在我的 Web 应用程序(使用 ASP.NET MVC 5 开发)中填充现有的 PDF 文件。 PDF 文件有一个名为“Text1”的字段。在此字段中,我想写入值“abc”。我目前正在尝试为此目的使用 PdfSharp。
这就是我目前尝试在 PDF 的字段中设置值的方式:
var doc = PdfReader.Open(ControllerContext.HttpContext.Server.MapPath("~/Documents/test.pdf"), PdfDocumentOpenMode.Modify);
doc.AcroForm.Fields["Text1"].ReadOnly = false;
这就是准备。
然后我尝试了很多东西。例如,这个:
doc.AcroForm.Elements.SetValue("Text1", "abc");
但这没有用,因为string
无法转换为PdfSharp.Pdf.PdfItem
。
我也试过这个:
doc.AcroForm.Fields["Text1"].Value = "abc";
我再次遇到与上述相同的异常。
是否可以设置现有 PDF 字段的值?这适用于 PdfSharp 吗?
您必须像这样使用 PDFSharp 库中的 PdfString
document.AcroForm.Elements.SetValue("/FieldName", new PdfString("yourstring"));
如果您尝试填充 PDF 表单域,您也需要这个,您还需要将 NeedsAppearances 元素设置为 true。否则,PDF 将“隐藏”表单上的值。
好的。我找到了解决方案。
首先,正如用户 Mu-Majid 所写,您必须将 NeedAppearances 元素设置为 true。这是按如下方式完成的:
if (doc.AcroForm.Elements.ContainsKey("/NeedAppearances") == false)
{
doc.AcroForm.Elements.Add("/NeedAppearances", new PdfBoolean(true));
}
else
{
doc.AcroForm.Elements.SetValue("/NeedAppearances", new PdfBoolean(true));
}
然后要设置字段的值,您必须考虑您拥有的字段类型。对于简单的文本字段,您可以按如下方式设置值:
doc.AcroForm.Fields["Text1"].Value = new PdfString("abc");
复选框的值可以设置如下:
var chckBox = (PdfCheckBoxField)(doc.AcroForm.Fields["chckbx1"]);
chckBox.Checked = true;
可以看出,您必须首先将字段显式转换为正确的类型。之后就可以设置值了。
这同样适用于下拉元素。这是为下拉元素设置值的方式:
var drpDwn = (PdfComboBoxField)(doc.AcroForm.Fields["Dropdown1"]);
drpDwn.Value = new PdfString("3");
在 PDF 中,值“3”的对应文本会出现在下拉列表中。
在此非常感谢 Mu-Majid 的帮助。
我想在我的 Web 应用程序(使用 ASP.NET MVC 5 开发)中填充现有的 PDF 文件。 PDF 文件有一个名为“Text1”的字段。在此字段中,我想写入值“abc”。我目前正在尝试为此目的使用 PdfSharp。
这就是我目前尝试在 PDF 的字段中设置值的方式:
var doc = PdfReader.Open(ControllerContext.HttpContext.Server.MapPath("~/Documents/test.pdf"), PdfDocumentOpenMode.Modify);
doc.AcroForm.Fields["Text1"].ReadOnly = false;
这就是准备。
然后我尝试了很多东西。例如,这个:
doc.AcroForm.Elements.SetValue("Text1", "abc");
但这没有用,因为string
无法转换为PdfSharp.Pdf.PdfItem
。
我也试过这个:
doc.AcroForm.Fields["Text1"].Value = "abc";
我再次遇到与上述相同的异常。
是否可以设置现有 PDF 字段的值?这适用于 PdfSharp 吗?
您必须像这样使用 PDFSharp 库中的 PdfString
document.AcroForm.Elements.SetValue("/FieldName", new PdfString("yourstring"));
如果您尝试填充 PDF 表单域,您也需要这个,您还需要将 NeedsAppearances 元素设置为 true。否则,PDF 将“隐藏”表单上的值。
好的。我找到了解决方案。
首先,正如用户 Mu-Majid 所写,您必须将 NeedAppearances 元素设置为 true。这是按如下方式完成的:
if (doc.AcroForm.Elements.ContainsKey("/NeedAppearances") == false)
{
doc.AcroForm.Elements.Add("/NeedAppearances", new PdfBoolean(true));
}
else
{
doc.AcroForm.Elements.SetValue("/NeedAppearances", new PdfBoolean(true));
}
然后要设置字段的值,您必须考虑您拥有的字段类型。对于简单的文本字段,您可以按如下方式设置值:
doc.AcroForm.Fields["Text1"].Value = new PdfString("abc");
复选框的值可以设置如下:
var chckBox = (PdfCheckBoxField)(doc.AcroForm.Fields["chckbx1"]);
chckBox.Checked = true;
可以看出,您必须首先将字段显式转换为正确的类型。之后就可以设置值了。
这同样适用于下拉元素。这是为下拉元素设置值的方式:
var drpDwn = (PdfComboBoxField)(doc.AcroForm.Fields["Dropdown1"]);
drpDwn.Value = new PdfString("3");
在 PDF 中,值“3”的对应文本会出现在下拉列表中。
在此非常感谢 Mu-Majid 的帮助。