Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用POI API将页脚(带图像)添加到Word文档_Java_Ms Word_Apache Poi_Doc - Fatal编程技术网

Java 使用POI API将页脚(带图像)添加到Word文档

Java 使用POI API将页脚(带图像)添加到Word文档,java,ms-word,apache-poi,doc,Java,Ms Word,Apache Poi,Doc,我面临以下情况和问题: 我必须检索现有的.doc/.docx文件,并通过为包含图像和一些文本的文档的每一页添加页脚来修改它。我一直试图通过使用ApachePOIAPI来实现这一点,但到目前为止我运气不佳。尽管我已经搜索了很多例子和指南,但我找到的那些只会让我更加失望 由于价格昂贵,我放弃了Aspose,因此我相信POI API将是实现这一目标的唯一途径 我相信使用.doc最接近我的方法就是编写这段代码,但它只创建了没有文本的页脚部分,并使文档中的图像崩溃: POIFSFileSystem fs

我面临以下情况和问题:

我必须检索现有的.doc/.docx文件,并通过为包含图像和一些文本的文档的每一页添加页脚来修改它。我一直试图通过使用ApachePOIAPI来实现这一点,但到目前为止我运气不佳。尽管我已经搜索了很多例子和指南,但我找到的那些只会让我更加失望

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

我相信使用.doc最接近我的方法就是编写这段代码,但它只创建了没有文本的页脚部分,并使文档中的图像崩溃:

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)执行相同的操作


有什么提示吗?

您所说的“使文档中的图像崩溃”是什么意思?你有例外吗?图像没有显示吗?我不好不解释,它们不再显示了。你知道是什么导致了这个问题吗?你尝试了什么版本的POI?如果它不是最新的,你是否尝试过升级,看看它是否是一个固定的问题?我正在使用最新的POI稳定版本(3.8)上面的示例不起作用,当我使用上面的代码修改代码时,得到的错误是xml内容中存在一些问题。