使用java中的FUTURA字体创建pdf

使用java中的FUTURA字体创建pdf,java,itext,Java,Itext,这里我用FUTURA字体创建pdf,但是我的BaseFont.createFont方法给出了错误。目前,PDF正在成功创建与字体,但我想这是与FUTURA字体创建 在这里,我使用itextpdf5.5.13.jar进行此活动 我已尝试使用导入tiff文件 BaseFont bf = BaseFont.createFont("futura",BaseFont.TIMES_ITALIC, BaseFont.EMBEDDED, true, bytesArray, null); 但这是一个错误 com

这里我用FUTURA字体创建pdf,但是我的BaseFont.createFont方法给出了错误。目前,PDF正在成功创建与字体,但我想这是与FUTURA字体创建

在这里,我使用itextpdf5.5.13.jar进行此活动 我已尝试使用导入tiff文件

BaseFont bf = BaseFont.createFont("futura",BaseFont.TIMES_ITALIC, BaseFont.EMBEDDED, true, bytesArray, null);
但这是一个错误

com.itextpdf.text.DocumentException:无法识别带有“Identity-H”的字体“futura”。
请访问com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:716)
请访问com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:625)
请访问com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:568)
这是我在PDF中编写的代码

PdfContentByte cb = writer.getDirectContent();        
File file = new File(p.getProperty("FONTFILE"));
byte[] bytesArray = new byte[(int) file.length()]; 
BaseFont bf = BaseFont.createFont("futura",BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, bytesArray, null);
cb.saveState();
cb.beginText();
cb.moveText(x, y);
cb.setFontAndSize(bf, size);
cb.showText(text);
cb.endText();
cb.restoreState();
预期结果应为“PDF应使用Futura字体创建”
但是它引发了异常。

BaseFont.createFont使用第一个参数来确定要实例化的字体类型

  • 如果它是标准14字体名称或CJK字体名称(我假设来自Adobe CJK字体包),则该字体将根据其已知特征进行初始化,而不嵌入
  • 如果以“.afm”或“.pfm”结尾,则字体初始化为类型1字体
  • 如果以“.ttf”或“.otf”结尾,或包含“.ttc”,则该字体将初始化为true type字体
  • 否则(取决于
    boolean noThrow
    参数)
    null
    将返回或抛出
    异常
在手头的情况下,应加载真实字体。因此,在

BaseFont bf = BaseFont.createFont("futura",BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, bytesArray, null);

将“futura”替换为“futura.ttf”。甚至,正如您最终所做的那样,使用字体文件的完整路径和文件名。

至于futura在
字节数组中编码的字体类型是什么?如果是TrueType字体,请尝试
“futura.ttf”
,如果是OpenType字体,请尝试
“futura.otf”
etcfutra是窗口字体,我也有此字体的ttf文件。你能建议如何在Basefont类中使用这种字体吗?请看上面,用“futura.ttf”代替“futura”。谢谢,这对我很有用。我传递了ttf文件,并应用了整个路径和字体。好的,我会让您接受这个实际答案。