本文介绍了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阿拉伯字体作为问号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 13:23