【问题标题】:Itext embed font in a PDFItext 在 PDF 中嵌入字体
【发布时间】:2010-10-12 05:10:31
【问题描述】:

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

我也有客户没有在他们的计算机中安装条形码字体,因此我想将字体嵌入到 PDF 中。有没有办法让我使用 iText 将 AcroFields 中使用的字体嵌入到 PDF 中?

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

【问题讨论】:

    标签: java pdf fonts itext foxit


    【解决方案1】:
    PdfContentByte ab = yourPDFWriter.getDirectContent();
    // field: PdfFormField.createTextField(...);
    PdfAppearance ap = ab.createAppearance(320, 30); // size of field
    field.setDefaultAppearanceString(ap);
    

    这应该可以解决问题。

    【讨论】:

      【解决方案2】:

      我几乎可以肯定您现在已经得到了答案,但也许其他人想详细了解解决方案。下面是我用来在生成的 PDF 中嵌入字体的示例 java 代码(仅在某些情况下有用,因为文档的大小会急剧增加)。 作为创建 PDF 表单的免费工具,我使用了 OpenOffice 编写器,通过在文档中添加表单并将文档导出为 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 输入的那些文本嵌入字体,你能看看@987654321 @?提前致谢!
      猜你喜欢
      • 2016-08-29
      • 2015-12-04
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      相关资源
      最近更新 更多