如何在eclipse中使用itext亚洲库?

如何在eclipse中使用itext亚洲库?,itext,Itext,我的代码: public static final String[] tempString = { "KozMinPro-Regular.otf", "UniJIS-UCS2-H", pharseString }; bf = BaseFont.createFont(tempString[0], tempString[1], BaseFont.NOT_EMBEDDED); java.nio.charset.UnsupportedCharsetException: UniJIS-UCS2-H

我的代码:

public static final String[] tempString = { "KozMinPro-Regular.otf", "UniJIS-UCS2-H", pharseString };
bf = BaseFont.createFont(tempString[0], tempString[1], BaseFont.NOT_EMBEDDED);
java.nio.charset.UnsupportedCharsetException: UniJIS-UCS2-H
    at java.nio.charset.Charset.forName(Unknown Source)
    at com.itextpdf.text.pdf.PdfEncodings.convertToBytes(PdfEncodings.java:186)
    at com.itextpdf.text.pdf.TrueTypeFont.<init>(TrueTypeFont.java:376)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:705)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:621)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:456)
    at de.vogella.itext.write.Main.addTextJapanese(Main.java:145)
    at de.vogella.itext.write.Main.addContent(Main.java:134)
    at de.vogella.itext.write.Main.main(Main.java:254)
结果:

public static final String[] tempString = { "KozMinPro-Regular.otf", "UniJIS-UCS2-H", pharseString };
bf = BaseFont.createFont(tempString[0], tempString[1], BaseFont.NOT_EMBEDDED);
java.nio.charset.UnsupportedCharsetException: UniJIS-UCS2-H
    at java.nio.charset.Charset.forName(Unknown Source)
    at com.itextpdf.text.pdf.PdfEncodings.convertToBytes(PdfEncodings.java:186)
    at com.itextpdf.text.pdf.TrueTypeFont.<init>(TrueTypeFont.java:376)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:705)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:621)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:456)
    at de.vogella.itext.write.Main.addTextJapanese(Main.java:145)
    at de.vogella.itext.write.Main.addContent(Main.java:134)
    at de.vogella.itext.write.Main.main(Main.java:254)
java.nio.charset.UnsupportedCharsetException:UniJIS-UCS2-H
位于java.nio.charset.charset.forName(未知源)
位于com.itextpdf.text.pdf.PdfEncodings.convertToBytes(PdfEncodings.java:186)
在com.itextpdf.text.pdf.TrueTypeFont.(TrueTypeFont.java:376)
请访问com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:705)
请访问com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:621)
请访问com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:456)
位于de.vogela.itext.write.Main.addTextJapanese(Main.java:145)
在de.vogela.itext.write.Main.addContent(Main.java:134)
位于de.vogela.itext.write.Main.Main(Main.java:254)
我的项目:

public static final String[] tempString = { "KozMinPro-Regular.otf", "UniJIS-UCS2-H", pharseString };
bf = BaseFont.createFont(tempString[0], tempString[1], BaseFont.NOT_EMBEDDED);
java.nio.charset.UnsupportedCharsetException: UniJIS-UCS2-H
    at java.nio.charset.Charset.forName(Unknown Source)
    at com.itextpdf.text.pdf.PdfEncodings.convertToBytes(PdfEncodings.java:186)
    at com.itextpdf.text.pdf.TrueTypeFont.<init>(TrueTypeFont.java:376)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:705)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:621)
    at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:456)
    at de.vogella.itext.write.Main.addTextJapanese(Main.java:145)
    at de.vogella.itext.write.Main.addContent(Main.java:134)
    at de.vogella.itext.write.Main.main(Main.java:254)
请参阅链接:


你对如何修复这个bug有什么建议吗?

你把自己的错误归咎于你的工具

这没有道理:

public static final String[] tempString = { "KozMinPro-Regular.otf", "UniJIS-UCS2-H", pharseString };    
bf = BaseFont.createFont(tempString[0], tempString[1], BaseFont.NOT_EMBEDDED);
您有一个名为
KozMinPro Regular.otf
的字体程序,或者希望使用字体
KozMinPro Regular

如果您有一个名为
KozMinPro Regular.otf
的文件,则不需要iText-Asian.jar。只需将字体文件与该字体程序支持的编码一起使用即可<该OpenType字体不支持code>UniJIS-UCS2-H

如果要使用CJK字体(未嵌入且需要Adobe Reader中的字体包的字体),应使用
KozMinPro-Regular
(不带
otf


简而言之:代码中有一个bug,而不是使用的工具中的bug。将来,您可能希望用不同的方式表达您的问题。

非常感谢您的帮助。您说过“只需使用该字体程序支持的编码的字体文件”,那么如何知道编码是什么(KozMinPro Regular.otf)?请参阅文档中以下示例中的
getCodePagesSupported()
方法:(同时看一看涉及
标识编码的其他示例。)感谢您的支持^^