在Java中的docx文件中从右向左书写时出现问题

时间:2019-03-05 14:02:58

标签: java

我用希伯来语在Java中创建docx文件。我在此文件中从右到左定义文字。我有个问题: 当我写非希伯来字母的其他字符时,它们是从左到右写在我创建的docx文件中的。 我正在寻找一种解决方案,无论书写字符(希伯来字母或其他字符)如何,始终保持从右到左的书写连续性

我的代码非常简化是:

    String[] lines = { "שלו_ _רוך א_ד ש_יים", "של_ש אר_ע" };

    File fichier = new File("C:\\Users\\David\\Documents\\מבחנים" + "\\הסתרה" + ".docx");
    FileOutputStream outStream = null;
    try {
        outStream = new FileOutputStream(fichier);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    XWPFDocument doc = new XWPFDocument();
    XWPFRun run;
    XWPFParagraph par;

    par = doc.createParagraph();
    par.setAlignment(ParagraphAlignment.LEFT);
    par.setSpacingBefore(0);
    par.setSpacingAfter(350);

    CTP ctp = par.getCTP();
    CTPPr ctppr = ctp.getPPr();
    if (ctppr == null) {
        ctppr = ctp.addNewPPr();
    }
    ctppr.addNewBidi().setVal(STOnOff.ON);

    run = par.createRun();
    run.setFontSize(16);
    for (String line : lines) {
        for (String word : line.split("\\s+")) {
            run.setText(word);
            run.setText(" ");
        }
        run.addCarriageReturn();
    }

    try {
        doc.write(outStream);
        outStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

1 个答案:

答案 0 :(得分:0)

将此扔到桌子上。

您可能要研究Bidirectional Text,因为Java文档包含的详细信息比我在此答案中所能提供的要多。

Microsoft还提供了有关Bidirectional Text的文档,可以帮助您实施,并且还提供了希伯来语示例。

如果您能够在简单的独立JComponent中开发概念证明,则可以在Microsoft中进行相同的操作。