通过PDFBox将波斯文字写成pdf

问题描述 投票:1回答:1

我想通过PDFBox将波斯文字写入pdf,但是pdfbox分开并反向分开字符。我该如何解决? (我使用pdfbox pdfbox-2.0.19)

这是我的代码:

                 PDDocument doc = new PDDocument();
                 PDPage page = new PDPage(PDRectangle.A4);
                 doc.addPage(page);
                 PDPageContentStream cont = new PDPageContentStream(doc, page);
                 cont.beginText();
                 PDType0Font font = PDType0Font.load(doc, new File("C:\\Users\\farhad\\Downloads\\vazir-font-v24.1.0\\Vazir.ttf"));
                 int fontSize = 15;
                 cont.setFont(font, fontSize);
                 String text = "برنامه نویس ایرانی هست اینو بلد باشه؟";
                 float x =  50;
                 float y = page.getMediaBox().getHeight() / 2;
                 cont.newLineAtOffset(x, y);
                 cont.showText(text);
                 cont.endText();
                 cont.close();
                 doc.save("D:\\pdf.pdf");

并且我找到了显示结果的屏幕截图。

enter image description here

java pdfbox
1个回答
0
投票

对于那些寻求答案的人:

您应该对Unicode字符进行一些操作。您通常认识的每个波斯字符(例如سشتظ)实际上都有4种不同的形式,每种形式都有其自己的Unicode字符。

  • 初始形式
  • 中间表格
  • 最终形式
  • 隔离形式

比方说سا

在这种情况下,首字母س具有一个Unicode字符,它与单词末尾的راس中的س不同。

为了更好的理解,请看下面的图片

enter image description here

如何获得每种形式的Unicode字符?

只需转到此网站https://www.compart.com/en/unicode/并搜索您的角色。

请注意,阿拉伯语和波斯语几乎使用相同的脚本,这就是为什么在我上传的图片中,对于س,它说'阿拉伯语字母是孤立的形式'

© www.soinside.com 2019 - 2024. All rights reserved.