java - 在 XWPFDocument 中使用阿拉伯语和波斯语

标签 java converters xwpf

我想将带有阿拉伯字母的word转换为pdf, 经过一番研发后,我决定使用

org.apache.poi.xwpf.converter.pdf.PdfConverter

但是当我写下面的代码时,最终结果是从左到右,并且单词很困惑,例如pdf中的“?????”结果是“?????”我的docx非常大而且没有一个段落:

public class ConvertWord {
    public static void ConvertToPDF(String docPath, String pdfPath) {
        try {
            InputStream doc = new FileInputStream(new File(docPath));
            XWPFDocument document = new 


            PdfOptions options = PdfOptions.create();
            options.fontEncoding("UTF-8")

            OutputStream out = new FileOutputStream(new File(pdfPath));

            PdfConverter.getInstance().convert(document,out,options);

        } catch (FileNotFoundException ex) {

        } catch (IOException ex) {

        }
    }

    public static void main(String[] args) {
        ConvertWord cwoWord=new ConvertWord();
        cwoWord.ConvertToPDF("D://" + "usc.docx","D://test12.pdf");

    }



   }

最佳答案

有一个解决方法可以解决此问题。 您需要使用ICU4J图书馆。 然后:

String shaped = new StringBuilder(new ArabicShaping(ArabicShaping.LETTERS_SHAPE).shape(s))
.reverse().toString();

尽管您在使用波斯语 Unicode 时可能会遇到一些问题。存在一个问题,有人通过修补 ArabicShaping 解决了这个问题。我没有找到它的链接,但是 here是修补后的代码。 (我必须将文件上传到我的 Google 云端硬盘,这样它就不会随着时间的推移而被删除)

此外,here是代码的链接以及它与主代码的区别。

为了方便起见,我将类名称更改为 PersianShaping

关于java - 在 XWPFDocument 中使用阿拉伯语和波斯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44998739/

相关文章:

java - Orika:从字符串映射到 SomeObjects 列表

javascript - JavaScript 中十六进制字符串到字节值的稳健转换

java - Apache POI - 在 .doc 文件中的关键字之间检索文本内容并有条件地呈现它

java - 从 XWFPParagraph 获取 XWPFRun

java - 我需要有关如何使用给定的随机数减去对象中的值的帮助

java - guice 的 TypeLiteral 是如何工作的?

Java 方法有时会被线程之一跳过

java - 如何在java中为多个按钮设置相同的操作/过程

python - 如何在python中将多行字符串转换为矩阵

java - 使用 Apache POI 的 xwpfd 在表格的单元格中插入图像