Embed font into PDF file by using iText

2020-01-29 09:01发布

问题:

I defined a tag map, and got a XML data file. I want to convert the XML data file to PDF by using iText. The question is how to embed fonts (e.g. Polish font, Chinese font) into the target PDF when converting XML to PDF?

回答1:

If you are doing more work with iText, you may want to invest into the iText book - it has examples for all the features of iText.

There is a parameter that you specify when you create your font that defines font embedding:

BaseFont helvetica = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);
Font font = new Font(helvetica, 12, Font.NORMAL);

You can find more iText font related examples here: http://1t3xt.info/examples/browse/?page=toc&id=14



回答2:

However, you will have problem if you will not have single font matching any characters used by you and you need multiple fonts.

In this case the FontSelector class is for you.

I've written a short article about that:
http://lechlukasz.wordpress.com/2010/01/06/using-dynamic-fonts-for-international-texts-in-itext/



回答3:

Here's a really easy way of instructing iText to embed all fonts. Insert this before your code to load fonts:

FontFactory.defaultEmbedding = true;


回答4:

You can try transforming it into PDF/A which has all the fonts embedded.

    PdfReader reader = new PdfReader(GetTemplateBytes());
    pst = new PdfStamper(reader, Response.OutputStream);

    pst.Writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_4);
    pst.Writer.PDFXConformance = PdfWriter.PDFA1A;