使用 Java 的 Word 2019 在 DOCX4J 中进行 RTL

RTL in DOCX4J with Word 2019 using Java

提问人:Zahraa Issa 提问时间:8/30/2022 最后编辑:vimuthZahraa Issa 更新时间:9/2/2022 访问量:136

问:

我正在尝试使用 docx4j 库生成从 xhtml 网页发送到 .docx 文件(2019 版本)的文本(阿拉伯语 + 英语)。但似乎该库不支持 Word 2019 上的 RTL 方向。

但是,它使用 Word 2013 效果很好。

截图:

Word2013 生成

1

Word2019-生成

2

java ms-word xhtml 从右到左 docx4j

评论

0赞 JasonPlutext 8/31/2022
请附上相关OpenXML的样本,作为可编辑的文本。
0赞 Zahraa Issa 8/31/2022
你好JasonPlutex,drive.google.com/drive/folders/...上面的链接包含.docx文件
0赞 Zahraa Issa 8/31/2022
替换文本框的模板也附加到链接。

答:

0赞 JasonPlutext 9/2/2022 #1

您如何创建生成的 2013.docx 和生成的 2019.docx 并不明显,但是您的 2013 docx(我知道看起来符合您的期望)和 2019 年之间的区别是 rtl rPr 的存在。

2013 年文档的相关部分:

          <w:p>
              <w:pPr>
                <w:bidi/>
              </w:pPr>
              <w:r>
                <w:rPr>
                  <w:rFonts w:cs="Calibri"/>
                  <w:rtl/>
                </w:rPr>
                <w:t>يجب</w:t>
              </w:r>
              <w:r>
                <w:t xml:space="preserve"> </w:t>
              </w:r>
              <w:r>
                <w:rPr>
                  <w:rFonts w:cs="Calibri"/>
                  <w:rtl/>
                </w:rPr>
                <w:t>إدخال</w:t>
              </w:r>

与 2019 年的 docx 相比:

            <w:p>
              <w:pPr>
                <w:bidi/>
              </w:pPr>
              <w:r>
                <w:t>يجب</w:t>
              </w:r>
              <w:r>
                <w:t xml:space="preserve"> </w:t>
              </w:r>
              <w:r>
                <w:t>إدخال</w:t>
              </w:r>

评论

0赞 Zahraa Issa 9/2/2022
非常感谢!!我通过格式化字符串解决了这个问题。字符串[] 行 = s.split(“\n”);StringBuilder sb = 新 StringBuilder();for (int i = 0; i < lines.length; i++) { sb.append(“\u202B”); // 从右到左嵌入 sb.append(lines[i]); sb.append(“\u202C\n”); // 弹出定向格式 } s = sb.toString();