我在android中使用itext pdf库生成一些pdf。 它已通过gradle添加到项目中,我使用的版本是 5.5.10
当只有英文字符打印到pdf时,一切都很完美。当我尝试添加Norweigian字符时,问题就开始出现了(例如:å,æ,ø,è等。)。
除了那些角色之外,一切都很完美,我得到了一个空的空间。
我四处搜索,花了2天但没有任何工作。 以下是我尝试使用的代码:
String FONT = "FreeSans.ttf";
String RESULT = "test.pdf";
BaseFont font = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
// step 1
Document document = new Document();
// step 2
PdfWriter.getInstance(document, new FileOutputStream(RESULT));
// step 3
document.open();
// step 4
document.add(new Paragraph("Sandem g\u00c5rd", new Font(font, 20)));
// step 5
document.close();
经过很多挫折之后,我决定在纯java上尝试相同的代码(NO ANDROID)。
我使用intelliJ创建了一个新项目,并从maven com.itextpdf导入了相同的库:itextg:5.5.10
并猜测它在第一次运行时的纯JAVA是什么。字符Å(Unicode字符: u + 00c5 )正确显示! 真奇怪啊!相同的代码版本的库,它只适用于Java,但不适用于android!
我也尝试过改变很多字体,但没有运气! 如果我尝试打印段落而不添加字体参数而不是空格,我会得到一些奇怪的字符。
当我尝试使用字体 AbhayaLibret 时,遇到了一种奇怪的行为。使用这个确切的字体我可以看到å字符和其他特殊字符,但只有那些!这个字体没有显示正常的英文字符!这又是一种奇怪的行为!
此时我开始怀疑将字体文件捆绑到android .apk包中可能出错,或者可能无法正确解析!
或许我做错了什么?
更新 我忘记提到在某些时候我试图使用unicode打印印地语语言字符,这些字符完美无缺!这又是非常奇怪的,因为那些unicode代码是正确打印的,但不是我想要使用的那个。