【问题标题】:Right to Left (RTL) text in XWPFDocument (Apache POI)XWPFDocument (Apache POI) 中的从右到左 (RTL) 文本
【发布时间】:2012-06-23 18:04:51
【问题描述】:

我找不到在我的 Java 程序中使用 XWPFDocument (Apache POI) 在 Docx 中制作 RTL 段落的方法。这是我生成 XWPFDocument 的代码。

    XWPFParagraph title = document.createParagraph();
    title.setAlignment(ParagraphAlignment.CENTER);
    title.setVerticalAlignment(TextAlignment.CENTER);
    title.setWordWrap(true);
    XWPFRun titleRun = title.createRun();
    titleRun.setText(reportDesign.getName());

    XWPFTable s = document.createTable(resultList.size()+1, columnList.size());
    // declare a row object reference
    XWPFTableRow r = s.getRow(0);
    // declare a cell object reference
    XWPFTableCell c = null;
    // create columnList.size() cells (0-(columnList.size()-1))
    for (int cellnum = 0; cellnum < columnList.size(); cellnum++) {
        c = r.getCell(cellnum);
        c.setColor("c9c9c9");
        c.setVerticalAlignment(XWPFVertAlign.CENTER);
        c.setText(columnList.get(cellnum).getColumnHeader());
    }
    // create a sheet with resultList.size() rows (1-resultList.size())
    for (int rownum = 0; rownum < resultList.size(); rownum++) {
        // create a row
        r = s.getRow(rownum+1);

        // create columnList.size() cells (0-(columnList.size()-1))
        for (int cellnum = 0; cellnum < columnList.size(); cellnum++) {
            c = r.getCell(cellnum);
            Object value = resultList.get(rownum).get(columnList.get(cellnum).getColumnKey());
            if (value != null) {
                c.setText(value.toString());
            } else {
                c.setText("");
            }
        }
    }

你能帮帮我吗?是否有合理的方式来扩展 POI(或类似解决方案)以获得此功能?

【问题讨论】:

    标签: apache-poi right-to-left


    【解决方案1】:

    到目前为止,我发现的一种解决方法是使用模板文档。

    使用此方法,您可以创建一个空文档,其中“Normal”样式被配置为 RTL。这样,您文档中的所有内容都将是 RTL。

    XWPFDocument document = new XWPFDocument(AbstractWordView.class.getClassLoader().getResourceAsStream("empty.docx"));
    

    【讨论】:

    • 如何设置 UTF-8 ,默认情况下,当我将 word 转换为 pdf 时,pdf 文本被破坏,例如“بی تر ت”而不是“ترتیب” 我使用了这个代码:选项.fontEncoding("UTF-8") 但不是让它正确。所有字母都消失了
    • 您的问题与此问题无关,因为它与 Docx 格式有关。我不知道使用 Apache POI 的 PDF。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2020-04-29
    相关资源
    最近更新 更多