我想通过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");
并且我找到了显示结果的屏幕截图。
您应该对Unicode字符进行一些操作。您通常认识的每个波斯字符(例如سشتظ)实际上都有4种不同的形式,每种形式都有其自己的Unicode字符。
比方说سا
在这种情况下,首字母س具有一个Unicode字符,它与单词末尾的راس中的س不同。
为了更好的理解,请看下面的图片
只需转到此网站https://www.compart.com/en/unicode/并搜索您的角色。
请注意,阿拉伯语和波斯语几乎使用相同的脚本,这就是为什么在我上传的图片中,对于س,它说'阿拉伯语字母是孤立的形式'