itext android印地语pdf创建
我正在使用itextg库在我的android设备上用印地语创建pdf。(PDF正以完美的英语创建) 下面是我的代码- 格拉德尔-itext android印地语pdf创建,android,pdf,itext,Android,Pdf,Itext,我正在使用itextg库在我的android设备上用印地语创建pdf。(PDF正以完美的英语创建) 下面是我的代码- 格拉德尔- compile 'com.itextpdf:itextg:5.5.10' Java代码- final String FONT = "file:///android_asset/FreeSans.ttf"; Font f = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Strin
compile 'com.itextpdf:itextg:5.5.10'
Java代码-
final String FONT = "file:///android_asset/FreeSans.ttf";
Font f = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
String outputString= "\u0915\u093e\u0930 \u092a\u093e\u0930\u094d\u0915\u093f\u0902\u0917";
document.add(new Paragraph(outputString,f));
输出字符串取自此处的itext文档-
印地语文本未打印在pdf上。因此,outputString中的行不会打印在因此创建的pdf文件上
提前感谢在我看来,您有两个问题:
font.getFamilyname()
的输出,它可能是未知的
。这意味着该字体尚未找到,iText已默认为Helvetica。Helvetica不包含印度字母的信息\u0930\u094d
,即RA+halant,将作为र्, 规则的RA字符+你可以在正确的书写中在一个单词的末尾看到的halant符号。KA顶部的变音符号(如र्क) 在iText 5中是不可能实现的不幸的是,iText 7还没有Android端口,所以第二个问题目前还无法解决。首先,将您的freeans.ttf文件放在assets forlder中。iText库采用字体文件的文件路径,因此您无法直接访问assets文件夹,因此您不能只提供该文件的资产路径。下面是用于将字体文件从资产文件夹复制到应用程序的本地目录
public static final String HINDI_FONT = "FreeSans.ttf";
try {
File file = new File(getFilesDir(), HINDI_FONT);
if (file.length() == 0) {
InputStream fs = getAssets().open(HINDI_FONT);
FileOutputStream os = new FileOutputStream(file);
int i;
while ((i = fs.read()) != -1) {
os.write(i);
}
os.flush();
os.close();
fs.close();
}
} catch (IOException e) {
e.printStackTrace();
}
在单独的线程中执行try块代码,不要在主线程中执行。
if语句确保这种情况只发生一次。请在finally块而不是try块中写入流关闭语句,如上所示
接下来是itext语句使用的字体
Font f = FontFactory.getFont(getFilesDir() + "/" + HINDI_FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
PdfPCell eCell = new PdfPCell(new Phrase(entry, f));
eCell.setPadding(5);
table.addCell(eCell);
这里,varaible条目是您的印地语文本,代码是在活动中编写的,因此getFilesDir()可以工作。我在表格单元格中添加了一个短语。您也可以在段落中类似地使用它。我检查了此代码,它可以工作。我们可以在iTextPDF中使用Arial unicode来支持多种语言 I.从“控制面板”“->字体”->Arial、Arial Unicode MS常规和Arial圆角MT粗体->创建文件夹“字体””,并将所有字体粘贴到字体文件夹中 现在,我们可以将此文件夹保存在Android中的资产文件夹中,或保存在设备(移动设备)的内部存储中
最后在PDF文件中的任何地方使用catFont。编辑的问题,现在看看是否清晰。您是否验证了所讨论的字体包含这些字形?您的第一点是正确的,但为什么该字体可能为空?我对Android不太熟悉,所以我不知道您是否正在从正确的e文件系统。对我来说,将字体添加到应用程序的资源并从那里加载会更有意义(除非这是
android\u asset
的意思,我真的不知道)。我在使用内部存储方法时遇到此错误。/storage/emulated/0/Download/Marathi_Sharada.ttf由于许可限制而无法嵌入。
我想在pdf文件中打印印地语/马拉地语。因此我下载了此ttf。谢谢