PDFSharp заполнение полей формы

Я хотел бы заполнить поля формы в готовом 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, поскольку его нельзя использовать из-за лицензирования).

Любая помощь будет замечательной!

20
задан Jared Farrish 5 June 2011 в 02:14
поделиться

1 ответ

Я застрял с этой той же проблемой ранее сегодня. Однако я думаю, что исходный код имеет? обновленный, поэтому если Вы пробуете метод выше Вас, собираются получить 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();

1
ответ дан 30 November 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: