poi替换word图片
时间: 2023-08-15 09:05:53 浏览: 246
要用POI替换Word文档中的图片,可以使用如下的代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFPicture;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.util.IOUtils;
public class ReplaceImageInWord {
public static void main(String[] args) throws Exception {
// 读入原始 Word 文档
FileInputStream fis = new FileInputStream(new File("original.docx"));
XWPFDocument document = new XWPFDocument(fis);
fis.close();
// 获取所有段落
for (XWPFParagraph paragraph : document.getParagraphs()) {
// 获取段落中所有的图片
for (XWPFPicture picture : paragraph.getCTP().getRArray(0).getDrawingArray(0).getInlineArray()) {
// 获取图片二进制数据
byte[] data = picture.getCTPicture().getBlipFill().getBlip().getEmbeddedDocument().getByteArray();
// 替换图片
FileInputStream fis2 = new FileInputStream(new File("new-image.png"));
byte[] newData = IOUtils.toByteArray(fis2);
fis2.close();
picture.getCTPicture().getBlipFill().getBlip().setEmbeddedDocument(newData);
}
}
// 保存 Word 文档
FileOutputStream fos = new FileOutputStream(new File("new.docx"));
document.write(fos);
fos.close();
document.close();
}
}
```
这段代码中,我们读入原始 Word 文档,然后遍历文档中的所有段落,再遍历每个段落中的所有图片。我们可以使用 `getCTP().getRArray(0).getDrawingArray(0).getInlineArray()` 获取每个段落中的图片。然后,我们可以使用 `getCTPicture().getBlipFill().getBlip().getEmbeddedDocument().getByteArray()` 获取图片的二进制数据,使用 `setEmbeddedDocument()` 方法替换图片。最后,我们保存修改后的 Word 文档。