我正在尝试在我的代码中使用IDENTITY_H字体encodinng:
BaseFont courier = BaseFont.createFont(BaseFont.COURIER, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font = new Font(courier, 12, Font.NORMAL);
这是我得到的错误。
我应该添加一个罐子,还是到底出了什么问题?
谢谢
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)
最佳答案
仅当将BaseFont.xxxx用作createFont方法中的第一个参数时,才可以应用某些编码。像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字体,则只有u可以使用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