Itext Арабский шрифт как вопросительные знаки - PullRequest
2 голосов
/ 16 мая 2011

Я новичок в библиотеке iText.У меня есть требование, где я должен предоставить вывод в формате PDF.В PDF есть арабские символы.Я создал тестовый сервлет, как показано ниже.

 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();
    }
}

Результат, в котором мы используем арабские символы, отображается как ?????,Как исправить эту проблему?где я делаю ошибку?

1 Ответ

3 голосов
/ 16 мая 2011

Ваша проблема в том, что вы создаете BaseFont с набором символов Windows CP1252, который подходит только для латинских символов. Вместо этого попробуйте кодировку для Unicode:

 BaseFont bf  = BaseFont.createFont("C:\\WINDOWS\\Fonts\\ARIALUNI.ttf", BaseFont.IDENTITY_H, true);
...