iText:UnsupportedEncodingException:Identity-H

时间:2014-01-22 10:04:51

标签: java itext

我正在尝试在我的代码中使用IDENTITY_H字体编码:

BaseFont courier = BaseFont.createFont(BaseFont.COURIER,  BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
  Font font = new Font(courier, 12, Font.NORMAL);

这是我得到的错误。 我应该添加一个额外的jar或究竟是什么问题? 谢谢

ExceptionConverter: java.io.UnsupportedEncodingException: Identity-H
at java.lang.StringCoding.encode(StringCoding.java:269)
at java.lang.String.getBytes(String.java:947)
at com.lowagie.text.pdf.PdfEncodings.convertToBytes(Unknown Source)
at com.lowagie.text.pdf.Type1Font.<init>(Unknown Source)
at com.lowagie.text.pdf.BaseFont.createFont(Unknown Source)
at com.lowagie.text.pdf.BaseFont.createFont(Unknown Source)
at com.lowagie.text.pdf.BaseFont.createFont(Unknown Source)
at fr.srd.core.TextFileToPDF.main(TextFileToPDF.java:35)

1 个答案:

答案 0 :(得分:3)

只有在createFont方法中使用BaseFont.xxxx作为第一个参数时,才能应用某些编码。如CP1250,CP1252,CP1257,WINANSI,MACROMAN。

如果您要创建新的自定义字体

BaseFont baseFont=BaseFont.createFont("C://Windows//Fonts//Arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font font=new Font(baseFont, 10);

使用AFM或PFM文件引用的Type1字体,TrueType字体然后只能使用IDENTITY_H或IDENTITY_V。基本上他们是编码样式。

在某些参考文献下面提供检查。

http://api.itextpdf.com/itext/com/itextpdf/text/pdf/BaseFont.html#createFont%28java.lang.String,%20java.lang.String,%20boolean%29

http://api.itextpdf.com/itext/com/itextpdf/text/pdf/BaseFont.html#IDENTITY_H