Itext 阿拉伯字体以问号形式出现

发布于 2024-11-07 14:38:53 字数 1425 浏览 0 评论 0原文

我是 iText 库的新手。我有一个要求,我需要提供 PDF 格式的输出。 pdf 中有阿拉伯字符。我创建了一个测试 servlet,如下所示。

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

我们使用阿拉伯字符的输出显示为 ?????? 。 如何纠正这个问题?我在哪里犯了错误?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

澉约 2024-11-14 14:38:53

您的问题是您使用 Windows CP1252 字符集创建 BaseFont,该字符集仅适用于拉丁字符。尝试使用 Unicode 编码:

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

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文