How to underline a portion of text in a text field?

I have an application that uses iText to fill PDF form fields. One of these fields has some text with tags. For example:

 

U>This text/U> should be underlined. 
I need the text enclosed in -tag to be underlined. How could I do that?

Posted on StackOverflow on Feb 18, 2015 by Galma88

Ordinary text fields do not support rich text. If you want the fields to remain interactive, you will need RichText fields. These are fields that are flagged in a way that they accept an RV value.

If it is OK for you to flatten the form (i.e. remove all interactivity), then your code will look like this:

public void createPdf(String src, String dest) throws Exception {
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
    Document doc = new Document(pdfDoc);

    PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
    form.flattenFields();

    Rectangle pos = form.getField("Name").getWidgets().get(0).getRectangle().toRectangle();

    SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
    InputSource is = new InputSource(new StringReader("
Bruno Lowagie

")); parser.parse(is, new CustomHandler(doc, pos)); pdfDoc.close(); }

Take a note that we use javax.xml.parsers.SAXParser to parse the HTML and put the CustomHandler instance as the second parameter. CustomHandler extends the org.xml.sax.helpers.DefaultHandler and overrides required methods for

1
2
3
</p>
 
<div>
and tags like this:
public void endElement(String uri, String localName, String qName)
            throws SAXException {
        if ("div".equals(qName)) {
            document.add(paragraph.setFixedPosition(position.getLeft(), position.getBottom(), position.getWidth()));
            position.moveDown(20);
            paragraph = new Paragraph();
        } else if ("u".equals(qName)) {
            isUnderlined = false;
        }
    }

Please take a look at the FillWithUnderline example for the full code.

If you want to parse the HTML into iText objects using XML Worker, please follow this link to see the solution in iText 5 version.



Ready to use iText?

Try our iText 7 Library and add-ons FREE for 30 days. Test your proof of concept, and see if our solution is right for you.

Get my FREE trial
Contact

Still have questions? 

We're happy to answer your questions. Reach out to us and we'll get back to you shortly.

Contact us
Stay updated

Join 11,000+ subscribers and become an iText PDF expert by staying up to date with our new products, updates, tips, technical solutions and happenings.

Subscribe Now