Search code examples
c#htmlitextxmlworker

Certain HTML entities (arrows) are not rendered in PDF (iText)


I tried to render ⇒ ⇔ € © → in the HTML with the XMLWorker and iText. Only the copyright and euro symbol appear in the PDF. I used the dafault font and Arial but without success.

Is there a way to get those entities rendered? Is there an alterantive way to render arrows in text?


Solution

  • As you can see in the ParseHtml3 example, it works for me:

    enter image description here

    This is my code to create the PDF:

    public void createPdf(String file) throws IOException, DocumentException {
        // step 1
        Document document = new Document();
        // step 2
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
        // step 3
        document.open();
        // step 4
        String str = "<html><head></head><body style=\"font-size:12.0pt; font-family:Arial\">"+
                "<p>Special symbols: &larr;  &darr; &harr; &uarr; &rarr; &euro; &copy;</p>" +
                "</body></html>";
    
        XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
        InputStream is = new ByteArrayInputStream(str.getBytes());
        worker.parseXHtml(writer, document, is);
        // step 5
        document.close();
    }
    

    Note that all entities are written in lower-case.