我正在尝试使用此处找到的 Java 代码在某些 PDF 文档中打印阿拉伯语: http://www.java2s.com/Code/Java/PDF-RTF/ArabicTextinPDF.htm
这个例子效果很好,除了文本是倒过来的。例如,稍微更改示例:
String txt = "\u0623\u0628\u062c\u062f\u064a\u0629 \u0639\u0631\u0628\u064a\u0629";
System.out.println(txt);
g2.drawString(txt, 100, 30);
与 PDF 相比,屏幕上打印的字符相同,但方向相反。控制台输出正确,PDF 不正确。
我不想简单地反转字符,否则我将失去双向支持......
非常感谢
最佳答案
IIRC,iText 支持比 drawString
更高级别的阿拉伯语整形。让我们看看这里...
啊! ColumnText.showTextAligned(PdfContentByte canvas,int alignment,Phrase phrase,float x,float y,float rotation,int runDirection,int arabicOptions)
对齐是 Element.ALIGN_*
之一。运行方向是 PdfWriter.RUN_DIRECTION_*
之一。阿拉伯语选项是位标志,ColumnText.AR_*
这应该可以解决问题,但有一个警告:我不确定它是否会处理同一个短语中的多个方向。您的测试字符串包含 CJKV、阿拉伯语和拉丁字符,因此应该有两个方向变化。
祝你好运。
关于java - 打印 PDF 时反转阿拉伯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188812/