PDFsharp & MigraDoc Foundation
https://forum.pdfsharp.net/

PDFTextFields not visible in Acrobe Reader
https://forum.pdfsharp.net/viewtopic.php?f=2&t=3784
Page 1 of 1

Author:  iksde [ Fri May 04, 2018 9:21 am ]
Post subject:  PDFTextFields not visible in Acrobe Reader

Hi, I am writing a web app for pdfs and there is an option to fill the fields.

I am happy that there is an open source library, i would even help you with it if i would know how to.

But there is a problem that i cannot mitigate.

Somehow my code is not working when setting the values of the fields, they are visible, horribly in pdf.js ( this one is on pdf.js, they dont pass font to the textfields, and they look too big ).

But when i use pdf js to download the pdf file there it is, and i can open it with notepad, the field values are set meaning the /V is set to the text that i expect.

I am even using /NeedAppearances from the thread from this very forum, still nothing.

Could you please help me out?

the code for fillling the fields looks like this:
Code:
      using (var memorystream = new MemoryStream())
      using (var pdfmemorystream = new MemoryStream(pdf))
      using (var document = PdfReader.Open(pdfmemorystream, Settings.Default.OwnerDocumentPassword, PdfDocumentOpenMode.Modify))
      {
        if (document.AcroForm.Elements.ContainsKey("/NeedAppearances"))
        {
          document.AcroForm.Elements["/NeedAppearances"] = new PdfSharp.Pdf.PdfBoolean(true);
        }
        else
        {
          document.AcroForm.Elements.Add("/NeedAppearances", new PdfSharp.Pdf.PdfBoolean(true));
        }
        var fields = document.AcroForm.Fields;
        foreach (var item in modifiedPdfFields)
        {
          var acroField = fields[item.FieldName];


          switch (acroField)
          {
            case PdfTextField textField:
              var font = textField.Font;
              textField.Value = new PdfString(item.ModifiedFieldValue);
              if (textField.Elements.ContainsKey("/DA") == false)
              {
                textField.Elements.Add("/DA", new PdfString($"{font.Name} {font.Size} Tf 0 g"));
              }
              else
              {
                textField.Elements["/DA"] = new PdfString($"{font.Name} {font.Size} Tf 0 g");
              }
              textField.Value = new PdfString(item.ModifiedFieldValue); // what what?
              try { textField.Text = item.ModifiedFieldValue; } catch(Exception ex) {
                Logger.Debug("Exception from the textField, but we expect it to happen.");
              }
              Logger.Debug($"Parsing field with {textField.Name} type {textField.GetType().Name}");
              break;
            case PdfListBoxField listBoxField:
              listBoxField.SelectedIndex = int.Parse(item.ModifiedFieldValue);
              Logger.Debug($"Parsing field with ${listBoxField.Name} type {listBoxField.GetType().Name}");
              break;
            case PdfComboBoxField comboBoxField:
              comboBoxField.SelectedIndex = int.Parse(item.ModifiedFieldValue);
              Logger.Debug($"Parsing field with ${comboBoxField.Name} type {comboBoxField.GetType().Name}");
              break;
            case PdfCheckBoxField checkBoxField:
              checkBoxField.Checked = bool.Parse(item.ModifiedFieldValue);
              Logger.Debug($"Parsing field with ${checkBoxField.Name} type {checkBoxField.GetType().Name}");
              break;
            default:
              Logger.Debug($"Skipping field with name {item.FieldName}");
              break;
          }

        }
        document.Flatten();
        document.Save(memorystream, false);
        resultingPdf = memorystream.ToArray();
      }
      return resultingPdf;

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/