【发布时间】:2010-12-19 00:02:29
【问题描述】:
我定义了一个标签映射,并得到了一个 XML 数据文件。我想使用 iText 将 XML 数据文件转换为 PDF。问题是XML转PDF时如何在目标PDF中嵌入字体(如波兰字体、中文字体)?
【问题讨论】:
标签: fonts map embed tags itext
我定义了一个标签映射,并得到了一个 XML 数据文件。我想使用 iText 将 XML 数据文件转换为 PDF。问题是XML转PDF时如何在目标PDF中嵌入字体(如波兰字体、中文字体)?
【问题讨论】:
标签: fonts map embed tags itext
如果您正在使用 iText 做更多的工作,您可能想要投资iText book - 它包含 iText 所有功能的示例。
您在创建字体时指定了一个参数来定义字体嵌入:
BaseFont helvetica = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);
Font font = new Font(helvetica, 12, Font.NORMAL);
您可以在此处找到更多与 iText 字体相关的示例:http://1t3xt.info/examples/browse/?page=toc&id=14
【讨论】:
BaseFont.CreateFont(@"D:\fonts\HELR45W.ttf", BaseFont.CP1250, true)
但是,如果您没有与您使用的任何字符匹配的单一字体并且您需要多种字体,则会遇到问题。
在这种情况下,FontSelector 类适合您。
我为此写了一篇短文:
http://lechlukasz.wordpress.com/2010/01/06/using-dynamic-fonts-for-international-texts-in-itext/
【讨论】:
这是指示 iText 嵌入所有字体的一种非常简单的方法。在你的代码之前插入这个来加载字体:
FontFactory.defaultEmbedding = true;
【讨论】:
您可以尝试将其转换为嵌入了所有字体的 PDF/A。
PdfReader reader = new PdfReader(GetTemplateBytes());
pst = new PdfStamper(reader, Response.OutputStream);
pst.Writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_4);
pst.Writer.PDFXConformance = PdfWriter.PDFA1A;
【讨论】: