Fonts 使用iText将字体嵌入PDF文件

Fonts 使用iText将字体嵌入PDF文件,fonts,map,embed,tags,itext,Fonts,Map,Embed,Tags,Itext,我定义了一个标记映射,并得到了一个XML数据文件。我想使用iText将XML数据文件转换为PDF。问题是如何在将XML转换为PDF时将字体(如波兰语字体、中文字体)嵌入目标PDF?如果您正在使用iText进行更多工作,您可能希望投资于-它提供了iText所有功能的示例 创建定义字体嵌入的字体时,您可以指定一个参数: BaseFont helvetica = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBE

我定义了一个标记映射,并得到了一个XML数据文件。我想使用iText将XML数据文件转换为PDF。问题是如何在将XML转换为PDF时将字体(如波兰语字体、中文字体)嵌入目标PDF?

如果您正在使用iText进行更多工作,您可能希望投资于-它提供了iText所有功能的示例

创建定义字体嵌入的字体时,您可以指定一个参数:

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

您可以在此处找到更多与iText字体相关的示例:

但是,如果没有与您使用的任何字符匹配的单个字体,并且需要多个字体,则会出现问题

在本例中,FontSelector类是为您准备的

我为此写了一篇短文:

您可以尝试将其转换为嵌入所有字体的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;

这里有一个非常简单的方法来指导iText嵌入所有字体。在代码加载字体之前插入以下内容:

FontFactory.defaultEmbedding = true;

我在书中研究了一些例子,似乎没有人对我的问题给出任何提示。在您的示例中,有一个标志“BaseFont.EMBEDDED”,可用于指示字体文件的嵌入。但我要做的是将XML文件转换为具有定义的标记映射的PDF目录,整个过程只需一次调用。没有地方可以放一些代码来嵌入字体。在您的示例中,我们可以将字体设置为某个段落,以便将字体嵌入到该段落中。但是对于使用tagmap自动生成PDF,我们如何设置字体,我们可以使用哪个类/接口嵌入字体?谢谢,问题解决了。我们可以在TagMap中嵌入配置字体。将“embedded”属性设置为“true”表示字体嵌入。无论如何,谢谢。我必须添加字体的路径-我想嵌入它
BaseFont.CreateFont(@“D:\fonts\HELR45W.ttf”,BaseFont.CP1250,true)
请注意,在iTextSharp中,FontFactory.DefaultEmbedding是一个只读属性。此建议无效,itext编写器会在此处或此处设置一些标志,但实际的字体引用和字体数据未正确添加到文件中。在具有未嵌入字体的文件上运行此操作仍然会创建缺少相同字体的文件。我用iText4.1.6和iText 5.5.10对此进行了测试。很长一段时间以来,我一直在寻找一种简单的方法,用iText 4或5嵌入字体,但没有成功。这是一个已有9年历史的解决方案。我记得当时做这件事很难。我不敢打赌它今天能用。也许尝试一些更新的东西。不幸的是,iText并没有让它变得更容易;9年前,在现有文件中嵌入现有字体是不起作用的,据我所知,在撰写本文时,它至今仍然不起作用。就我所知,写这篇文章没有捷径1.我还在找。