Itext 阿拉伯字体作为问号出现 [英] Itext Arabic Font coming as question marks
本文介绍了Itext 阿拉伯字体作为问号出现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是 iText 库的新手.我有一个要求,我需要将输出提供为 PDF.pdf中有阿拉伯字符.我创建了一个如下所示的测试 servlet.
I am new to iText library. I have a requirement where i need to provide the output as PDF. The pdf has Arabic characters in it. I created a test servlet as given below.
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType ("application/pdf;charset=UTF-8");
Document document = new Document();
try{
PdfWriter.getInstance(document,
response.getOutputStream()); // Code 2
document.open();
Font f1;
BaseFont bf = BaseFont.createFont("C:\\WINDOWS\\Fonts\\ARIALUNI.ttf", BaseFont.CP1252, true);
f1 = new Font(bf, 10);
PdfPTable table = new PdfPTable(2);
table.addCell("hellooooo1");
table.addCell("world2");
table.addCell("1113");
table.addCell("422");
// String a = "يبسبيبيبيسسسيبيببيسبيسيببي";
String a = "سش";
PdfPCell cell = new PdfPCell (new Paragraph (a,f1));
table.addCell (cell);
cell = new PdfPCell (new Paragraph ("Road",f1));
table.addCell (cell);
document.add(table);
document.close();
}catch(DocumentException e){
e.printStackTrace();
}
}
我们使用阿拉伯字符的输出显示为 ?????.如何纠正这个问题?我在哪里犯了错误?
The out put where we use the arabic characters are being displayed as ????? . How to rectify this problem? where i am making the mistake?
推荐答案
您的问题是您正在使用 Windows CP1252 字符集创建 BaseFont,该字符集仅适用于拉丁字符.尝试使用 Unicode 编码:
Your problem is where you're creating the BaseFont with the Windows CP1252 Character Set, which is only suitable for latin characters. Try the encoding for Unicode instead:
BaseFont bf = BaseFont.createFont("C:\\WINDOWS\\Fonts\\ARIALUNI.ttf", BaseFont.IDENTITY_H, true);
这篇关于Itext 阿拉伯字体作为问号出现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文