Я хотел бы заполнить поля формы в готовом PDF-документе, но при запуске AcroForm выдает ошибку Null Refrence.
string fileN4 = TextBox1.Text + " LOG.pdf";
File.Copy(Path.Combine(textBox4.Text + "\\", fileN4),
Path.Combine(Directory.GetCurrentDirectory(), fileN4), true);
// Open the file
PdfDocument document = PdfReader.Open(fileN4, PdfDocumentOpenMode.Modify);
PdfTextField currentField = (PdfTextField)(document.AcroForm.Fields["<CASENUM>"]);
//const
string caseName = TextBox1.Text;
PdfString caseNamePdfStr = new PdfString(caseName);
//set the value of this field
currentField.Value = caseNamePdfStr;
// Save the document...
document.Save(fileN4);
Итак, PdfTextField) currentField = (PdfTextField) (document.AcroForm.Fields ["
- это место, где происходит ошибка. Похоже, AcroForm даже не распознает поля.
Другой вариант - найти и замените текст в PDF (без использования itextsharp, поскольку его нельзя использовать из-за лицензирования).
Любая помощь будет замечательной!
Я застрял с этой той же проблемой ранее сегодня. Однако я думаю, что исходный код имеет? обновленный, поэтому если Вы пробуете метод выше Вас, собираются получить NullExceptionError. Вместо этого для TextField необходимо генерировать PdfString и использовать testfield. Значение вместо .text. Вот пример.
static PdfAccess()
{
Pdf.PdfDocument doc = Pdf.IO.PdfReader.Open(@"C:\...\ Contract.pdf", Pdf.IO.PdfDocumentOpenMode.Modify);
Pdf.AcroForms.PdfAcroForm form = doc.AcroForm;
if (form.Elements.ContainsKey("/NeedAppearances"))
{
form.Elements["/NeedAppearances"] = new PdfSharp.Pdf.PdfBoolean(true);
}
else
{
form.Elements.Add("/NeedAppearances", new PdfSharp.Pdf.PdfBoolean(true));
}
var name = (Pdf.AcroForms.PdfTextField)(form.Fields["Email"]);
name.Value = new Pdf.PdfString("ramiboy");
doc.Save(@"C:\...\ Contract.pdf");
doc.Close();