10

I trying to convert from iText5 to iText7. Got the package for iText7 from Nuget.

u-xas
  • 111
  • 1
  • 1
  • 3
  • 1
    Please be more specific about what functionality you're aiming to implement. iText7 was designed to be a lot more modular. So depending on your usecase there might be different classes that could serve your needs. – Joris Schellekens Jul 12 '17 at 14:44

1 Answers1

26

That's explained in chapter 5 of the iText 7 Jump-start tutorial. There is no PdfStamper class anymore. There is only a PdfDocument class that is used for creation of files as well as for manipulation of files.

Your question is very incomplete.

Is your code used to fill out forms? In that case, you need something like this:

PdfDocument pdf = new PdfDocument(
    new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
Map<String, PdfFormField> fields = form.getFormFields();
fields.get("name").setValue("Abhishek Kumar");
pdf.close();

Or in C#:

PdfDocument pdf = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField toSet;
fields.TryGetValue("name", out toSet);
toSet.SetValue("Abhishek Kumar");
form.FlattenFields();
pdf.Close();

Is your code used to add extra content to a document? In that case, you need something like this:

PdfDocument pdfDoc =
    new PdfDocument(new PdfReader(src), new PdfWriter(dest));
Document document = new Document(pdfDoc);
Rectangle pageSize;
PdfCanvas canvas;
int n = pdfDoc.getNumberOfPages();
for (int i = 1; i <= n; i++) {
    PdfPage page = pdfDoc.getPage(i);
    pageSize = page.getPageSize();
    canvas = new PdfCanvas(page);
    // add new content
}
pdfDoc.close();

Where it says // add new content, you can add content to the canvas.

Are you using PdfStamper for something else? In that case, you need to improve your question.

Bruno Lowagie
  • 75,994
  • 9
  • 109
  • 165
  • Thanks, yes I'm trying to fill out form, fetching a template from database, filling it and then saving it in database. Though I'm getting syntax error on line Map fields = form.getFormFields(); saying could not find namespace 'Map<,>' – u-xas Jul 13 '17 at 15:22
  • 1
    I assumed that every C# developer was supposed to know the C# equivalent of a `Map` in Java. I'll update my answer. – Bruno Lowagie Jul 13 '17 at 16:11
  • Thanks for the AcroForm hint, didn't found that one yet in their horrible documentations! – CularBytes Jun 27 '19 at 21:33