gpt4 book ai didi

java - 使用 POI API 将页脚(带图像)添加到 Word Doc

转载 作者:行者123 更新时间:2023-12-01 05:01:05 24 4
gpt4 key购买 nike

我面临以下情况和问题:

我必须检索现有的 .doc/.docx 文件并通过为包含图像和一些文本的文档的每个页面添加页脚来修改它。我一直在尝试使用 Apache POI API 来实现这一目标,但到目前为止我还没有运气。尽管我搜索了很多示例和指南,但我找到的那些只会让我更加失望。

由于价格昂贵,我放弃了 Aspose,所以我相信 POI API 将是实现这一目标的唯一途径。

我相信使用 .doc 执行此操作最接近的是执行这段代码,但它仅创建没有文本的页 footer 分,并使文档中的图像崩溃:

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("C:/testeF.doc"));
HWPFDocument doc = new HWPFDocument(fs);
//WordExtractor we = new WordExtractor(doc);
HeaderStories headerStories = new HeaderStories(doc);
Range rangeO = headerStories.getOddFooterSubrange();
if(rangeO == null)
rangeO = headerStories.getRange();
rangeO.insertAfter("Footer text from POI");
FileOutputStream newdoc = new FileOutputStream("C:/output.doc");
doc.write(newdoc);
newdoc.close();

请问你们中有人可以提供解决这些问题的建议吗?

最佳答案

有关 .docx 文件(XWPF,而不是 HWPF)的一些更新,我现在可以使用一些文本创建页脚或将一些文本插入到现有页脚中,但如果页脚已经存在,我只需将新文本附加到现有页脚中第一,我找不到覆盖它的方法。

例如:现有页脚=“测试”

执行以下代码后的页脚=“TestTest”

想要的结果=“测试”(覆盖第一个“测试”页脚文本

String text = "Test";
File docxFile = new File("C:/testeXWPF.docx");
FileInputStream finStream = new FileInputStream(docxFile.getAbsolutePath());
XWPFDocument doc = new XWPFDocument(finStream);

XWPFHeaderFooterPolicy policy = doc.getHeaderFooterPolicy();
if (policy == null) {
policy = new XWPFHeaderFooterPolicy(doc);
}

CTP ctP1 = CTP.Factory.newInstance();
CTR ctR1 = ctP1.addNewR();
CTText t = ctR1.addNewT();
t.setStringValue(text);
XWPFParagraph codePara = new XWPFParagraph(ctP1);

XWPFParagraph[] newparagraphs = new XWPFParagraph[1];
newparagraphs[0] = codePara;

policy.createFooter(policy.DEFAULT, newparagraphs);

FileOutputStream fileOut = new FileOutputStream(docxFile);

doc.write(fileOut);

fileOut.close();

目前,这仅适用于 docx 文件(XWPF),但我必须找到某种方法对 doc 文件(HWPF)执行相同的操作。

有什么提示吗?

关于java - 使用 POI API 将页脚(带图像)添加到 Word Doc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13367342/

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