gpt4 book ai didi

java - 如何使用 Apache POI 在 Word 文档中定义窄边距?

转载 作者:行者123 更新时间:2023-12-02 01:50:07 30 4
gpt4 key购买 nike

我正在使用 Apache POI 创建 docx 文档,并且希望将边距设置为窄,就像在 MS Word 中使用“布局”>“边距”>“窄”一样。

我看到了一些其他答案建议 RecordInputStream 但我不知道如何将它集成到我的代码中,因为它使用 FileInputStream 作为参数。

我使用 ByteArrayOutputStream 是因为我用omnifaces导出它,并且我想要一种让它工作的方法。

这是我的代码:

ByteArrayOutputStream output = new ByteArrayOutputStream();
XWPFDocument document = new XWPFDocument();
XWPFParagraph titleParagraph = document.createParagraph();
//some code here...
document.write(output);
document.close();
Faces.sendFile(output.toByteArray(), wordFilename, true);

请帮忙。提前致谢!

最佳答案

XWPFDocument 中没有用于设置页边距的内容到目前为止。因此,我们需要使用低级 bean org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectProrg.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar

word所说的窄边距是指周围 0.5 英寸的边距。

import java.io.FileOutputStream;

import org.apache.poi.xwpf.usermodel.*;

import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;

import java.math.BigInteger;

public class CreateWordPageMargins {

public static void main(String[] args) throws Exception {

XWPFDocument document = new XWPFDocument();

XWPFParagraph paragraph = document.createParagraph();

XWPFRun run = paragraph.createRun();
run.setText("Text");

CTSectPr sectPr = document.getDocument().getBody().getSectPr();
if (sectPr == null) sectPr = document.getDocument().getBody().addNewSectPr();
CTPageMar pageMar = sectPr.getPgMar();
if (pageMar == null) pageMar = sectPr.addNewPgMar();
pageMar.setLeft(BigInteger.valueOf(720)); //720 TWentieths of an Inch Point (Twips) = 720/20 = 36 pt = 36/72 = 0.5"
pageMar.setRight(BigInteger.valueOf(720));
pageMar.setTop(BigInteger.valueOf(720));
pageMar.setBottom(BigInteger.valueOf(720));
pageMar.setFooter(BigInteger.valueOf(720));
pageMar.setHeader(BigInteger.valueOf(720));
pageMar.setGutter(BigInteger.valueOf(0));

FileOutputStream out = new FileOutputStream("CreateWordPageMargins.docx");
document.write(out);
out.close();
document.close();

}
}

关于java - 如何使用 Apache POI 在 Word 文档中定义窄边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099263/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com