views:

977

answers:

1

I have a basic PDF file that I has 5 different blank content areas that I want to use iTextSharp to write text too. The problem is I'm not sure the best way to accomplish this. I have attempted to use ColumnText to accomplish this, but I cannot seem to add multiple ColumnText objects.

            ColumnText tagColumn = new ColumnText(pdfContentByte);
            tagColumn.SetSimpleColumn(460, 100, 620, 160);
            string[] tagColors = bt.DealerTagColor.Split('|');
            Font tagFont = FontFactory.GetFont(bt.DealerTagFont, bt.DealerTagSize, Font.NORMAL, new BaseColor(int.Parse(tagColors[0]), int.Parse(tagColors[1]), int.Parse(tagColors[2])));
            Paragraph p = new Paragraph(dto.Tag, tagFont);
            p.Leading = bt.DealerTagSize;
            tagColumn.AddElement(p);
            tagColumn.Go();

What I like about the ColumnText is it allows me to essential define a heigth/width, and position of the text area.

Any thoughts on how I can accomplish this with or without using ColumnText? I just need to have control of the font/fontsize/font color/leading/and width of the area which will allow the text to wrap.

+2  A: 

The easiest way would be to create and use form fields on your template PDF. This way you can reference a form field by name and set its value with a simple function call.

This article helped me:

Fill in PDF Form Fields using the Open Source iTextSharp Dynamic Link Library

EDIT: PdfPTables?

If your ColumnTexts are tabularly arranged consider using a PdfPTable. I've used PdfPTables to fill rows of data in forms generated from a blank template form. You need to figure out the x-coordinate of each of your columns and use these values when adding PdfPCells to your table, but it does work. I've never had to set an upper limit to the height of a PdfPCell but I image you can do it.

Check this page for more on PdfPTables.

Jay Riggs
Thanks for the response. I don't want to fill form fields, I just want to take an area on the PDF, say 100px by 100px and overlay an area of text that wraps within that 100 by 100 area
aherrick
I wonder if you can use a PdfPTable? See my edit.
Jay Riggs