是否可以使用 docx4j 显示页面边框?

is it possible to display the page border using docx4j?

我正在使用 docx4j 从 html 生成 Word 文档。
我想在我的word文档中显示页面边框。
有没有样本可以做到这一点?

页面边框位于 sectPr 元素中,例如:

        <w:pgBorders w:offsetFrom="page">
            <w:top w:val="single" w:color="auto" w:sz="4" w:space="24"/>
            <w:left w:val="single" w:color="auto" w:sz="4" w:space="24"/>
            <w:bottom w:val="single" w:color="auto" w:sz="4" w:space="24"/>
            <w:right w:val="single" w:color="auto" w:sz="4" w:space="24"/>
        </w:pgBorders>

您可以通过在 Word 中根据需要创建样式的 docx,然后使用 Docx4j Helper Word AddIn 或 docx4j webapp 来生成代码以匹配您首选的边框属性。

对于上面的XML,即生成如下两种形式的代码。

        // Create object for pgBorders
        SectPr.PgBorders sectprpgborders = wmlObjectFactory.createSectPrPgBorders();             
            // Create object for top
            CTBorder border = wmlObjectFactory.createCTBorder(); 
            sectprpgborders.setTop(border); 
                border.setVal(org.docx4j.wml.STBorder.SINGLE);
                border.setSz( BigInteger.valueOf( 4) ); 
                border.setColor( "auto"); 
                border.setSpace( BigInteger.valueOf( 24) ); 
            // Create object for left
            CTBorder border2 = wmlObjectFactory.createCTBorder(); 
            sectprpgborders.setLeft(border2); 
                border2.setVal(org.docx4j.wml.STBorder.SINGLE);
                border2.setSz( BigInteger.valueOf( 4) ); 
                border2.setColor( "auto"); 
                border2.setSpace( BigInteger.valueOf( 24) ); 
            // Create object for bottom
            CTBorder border3 = wmlObjectFactory.createCTBorder(); 
            sectprpgborders.setBottom(border3); 
                border3.setVal(org.docx4j.wml.STBorder.SINGLE);
                border3.setSz( BigInteger.valueOf( 4) ); 
                border3.setColor( "auto"); 
                border3.setSpace( BigInteger.valueOf( 24) ); 
            // Create object for right
            CTBorder border4 = wmlObjectFactory.createCTBorder(); 
            sectprpgborders.setRight(border4); 
                border4.setVal(org.docx4j.wml.STBorder.SINGLE);
                border4.setSz( BigInteger.valueOf( 4) ); 
                border4.setColor( "auto"); 
                border4.setSpace( BigInteger.valueOf( 24) ); 
            sectprpgborders.setOffsetFrom(org.docx4j.wml.STPageBorderOffset.PAGE);

方法二:

String openXML 
    = "<w:pgBorders w:offsetFrom=\"page\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" >"
            + "<w:top w:color=\"auto\" w:space=\"24\" w:sz=\"4\" w:val=\"single\"/>"
            + "<w:left w:color=\"auto\" w:space=\"24\" w:sz=\"4\" w:val=\"single\"/>"
            + "<w:bottom w:color=\"auto\" w:space=\"24\" w:sz=\"4\" w:val=\"single\"/>"
            + "<w:right w:color=\"auto\" w:space=\"24\" w:sz=\"4\" w:val=\"single\"/>"
        + "</w:pgBorders>";
        SectPr.PgBorders sectprpgborders = (SectPr.PgBorders)XmlUtils.unmarshalString(openXML); 
        // Hand edited; may need minor adjustment

然后它只是 sectpr.setPgBorders(sectprpgborders) 相关的 sectPr。