我正在尝试在我的代码中使用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)
答案 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#IDENTITY_H