Java Itext在PDF中嵌入字体

Java Itext在PDF中嵌入字体,java,pdf,fonts,itext,foxit,Java,Pdf,Fonts,Itext,Foxit,我有一个使用Foxit表单设计器创建的pdf。在我的设计系统上,我安装了条形码字体。条形码字体用于其中一个字段。foxit似乎没有在文档中嵌入字体 我也有一些客户的电脑中没有安装条形码字体,因此我想将这种字体嵌入到PDF中。我有没有办法使用iText将AcroFields中使用的字体嵌入到PDF中 编辑:字体似乎包含在文本中,但不包含在字段中,因此不会打印字体(条形码) PdfContentByte ab = yourPDFWriter.getDirectContent(); // field:

我有一个使用Foxit表单设计器创建的pdf。在我的设计系统上,我安装了条形码字体。条形码字体用于其中一个字段。foxit似乎没有在文档中嵌入字体

我也有一些客户的电脑中没有安装条形码字体,因此我想将这种字体嵌入到PDF中。我有没有办法使用iText将AcroFields中使用的字体嵌入到PDF中

编辑:字体似乎包含在文本中,但不包含在字段中,因此不会打印字体(条形码)

PdfContentByte ab = yourPDFWriter.getDirectContent();
// field: PdfFormField.createTextField(...);
PdfAppearance ap = ab.createAppearance(320, 30); // size of field
field.setDefaultAppearanceString(ap);

这应该可以解决问题。

我几乎可以肯定您现在已经得到了答案,但也许其他人希望获得解决方案的详细视图。下面是我用来在生成的PDF中嵌入字体的示例java代码(仅在某些情况下有用,因为文档的大小急剧增加)。 作为创建PDF表单的免费工具,我使用了OpenOffice writer,在文档中添加表单并将文档导出为PDF文件:

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();

我遇到了几乎相同的问题,我也做了和你一样的事情,但是我仍然不能为我用Java输入的文本嵌入字体,你能看一下吗?提前谢谢!