Java利用Apache POI库:从Word文档提取图片并保存到新文档
要在Java中获取Word文档中的图片并保存到另一个Word文档中,你可以使用Apache POI库。以下是一个简单的示例: 1. 首先,确保你已经在项目中添加了Apache POI库的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.0</version> </dependency> </dependencies> ``` 2. 然后,使用以下代码从源Word文档中提取图片并将其插入到目标Word文档中: ```java import org.apache.poi.xwpf.usermodel.*; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInline; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; public class WordImageExtractor { public static void main(String[] args) throws IOException { try (FileInputStream fis = new FileInputStream("source.docx"); XWPFDocument sourceDoc = new XWPFDocument(fis); FileOutputStream fos = new FileOutputStream("target.docx")) { XWPFDocument targetDoc = new XWPFDocument(); // 复制源文档的内容到目标文档 for (XWPFParagraph paragraph : sourceDoc.getParagraphs()) { XWPFParagraph newParagraph = targetDoc.createParagraph(); newParagraph.setAlignment(paragraph.getAlignment()); newParagraph.setStyle(paragraph.getStyle()); for (XWPFRun run : paragraph.getRuns()) { XWPFRun newRun = newParagraph.createRun(); newRun.setText(run.getText(0)); newRun.setFontSize(run.getFontSize()); newRun.setFontFamily(run.getFontFamily()); newRun.setBold(run.isBold()); newRun.setItalic(run.isItalic()); newRun.setUnderline(run.getUnderline()); newRun.setColor(run.getColor()); } } // 提取源文档中的图片并插入到目标文档中 List<XWPFPictureData> pictures = sourceDoc.getAllPictures(); for (XWPFPictureData picture : pictures) { byte[] pictureData = picture.getData(); int format = picture.getPictureType(); String filename = picture.getFileName(); targetDoc.addPictureData(pictureData, format); XWPFPicture pic = targetDoc.createParagraph().createRun().addPicture(new FileInputStream(filename), XWPFDocument.PICTURE_TYPE_PNG, filename, Units.toEMU(200), Units.toEMU(200)); pic.setPictureType(format); } // 保存目标文档 targetDoc.write(fos); } } } ``` 这段代码首先从源Word文档中读取内容和图片,然后将内容复制到目标Word文档中。接着,将图片数据添加到目标文档中,并将图片插入到一个新的段落中。将目标文档保存到磁盘上。 ######[AI写代码神器 | 863点数解答 | 2024-05-30 11:26:40]
- C代码潜在问题大揭秘:性能、安全与逻辑错误全解析(讯飞星火 | 1192点数解答 | 2025-11-26 09:45:04)60
- Python与C实现句子反转:代码对比及开发中需注意的关键要点(字节豆包 | 803点数解答 | 2025-10-25 10:06:05)91
- Python与C语言实现句子反转:开发中字符串处理的三大易错点揭秘(DeepSeek | 703点数解答 | 2025-10-25 10:07:45)173
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)428
- Maven POM文件开头元素详解及Spring Boot项目配置规范(DeepSeek | 1912点数解答 | 2026-04-23 16:43:34)15
- 解决 Java 中 HTTP 请求方法名含非法字符异常:示例与注意要点(阿里通义 | 321点数解答 | 2024-12-03 17:34:09)374
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)329
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1208
- Java 17结合POI-TL:轻松实现Word表格表头居中、首列居中与内容居右(DeepSeek | 689点数解答 | 2025-06-26 11:33:34)275
- 国际项目经理职位分析报告下载页:代码解析与下载注意要点揭秘 (DeepSeek | 160点数解答 | 2025-12-03 00:28:07)44
- 2025版PHP项目资料管理系统需求文档:全方位打造高效协作与安全存储平台 (字节豆包 | 1332点数解答 | 2025-07-18 10:36:24)162
- 用Python轻松将PPT每页转为图片,附代码示例!(阿里通义 | 315点数解答 | 2024-04-23 10:01:04)1383