Search code examples
javapdffontsitextfoxit

Itext embed font in a PDF


I have a pdf that has been created using the Foxit form designer. On my design system, I have the barcode font installed. The barcode font is used in one of the AcroFields. It appears that foxit does not embed the font in the document.

I also have customers that do not have the barcode font installed in their computers, and thus I would like to embed the font into the PDF. Is there a way for me to embed a font that is used in the AcroFields into the PDF using iText?

EDIT: The font seems to be included in the text, but not the fields, Therefore the font(barcode) will not print.


Solution

  • I'm almost sure that you got an answer by now, but maybe others would like to get a detailed view on the solution. Below is the sample java code I used to embed fonts in the generated PDF (useful only in some cases, as the size of the documents increases dramatically). As a free tool to create the PDF forms, I have used the OpenOffice writer, by adding forms inside the documents and exporting the documents as PDF files :

    PdfReader pdfTemplate = new PdfReader(templateName);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    BaseFont unicode = BaseFont.createFont(unicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    PdfStamper stamper = new PdfStamper(pdfTemplate, out);
    //assigning the font to the field
    stamper.getAcroFields().setFieldProperty("myField", "textfont", unicode, null);
    stamper.getAcroFields().setField("myField", someValue);
    stamper.close();
    pdfTemplate.close();