java word 图片不显示_POI用addPicture插入图片到word里面无法显示

本文介绍了在Java中使用POI库处理Word文档时遇到图片无法显示的问题,并提供了一个自定义的CustomXWPFDocument类,通过该类可以成功将图片添加到Word中并显示。作者分享了遇到的bug以及经过两天研究后的解决方法,帮助开发者解决类似困扰。
摘要由CSDN通过智能技术生成

这几天想通过一个现有word文件作为模板,然后根据标签写入对应数据,折腾了好几天了。

text解决了,表格解决了,结果才发现图片用XWPFDocument压根无法实现addPicture,POI自身有bug,图片是加入到word文件里面了,可是显示不了。。。

于是乎,又折腾了2天,终于整蛊了怎么让图片在里面显示出来,其他的还在进一步解决中。

贴个小代码给大家用,凑合着用,还有很多需要修改的:

/**

*

*/

package com.report.util;

import java.io.IOException;

import java.io.InputStream;

import org.apache.poi.openxml4j.opc.OPCPackage;

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

import org.apache.xmlbeans.XmlException;

import org.apache.xmlbeans.XmlToken;

import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;

import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;

import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;

/**

* @a

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Apache POI 插入图片Word 文档中需要以下步骤: 1. 创建 XWPFRun 对象:XWPFRun 表示一个段落中的一部分文本,可以包含文字、图片等。 ```java XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); ``` 2. 读取图片文件并将其插入到文档中: ```java String imagePath = "path/to/image.jpg"; InputStream imageStream = new FileInputStream(imagePath); run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(200), Units.toEMU(200)); ``` 3. 参数解释: - `imageStream`:图片的输入流。 - `XWPFDocument.PICTURE_TYPE_JPEG`:图片的类型,可选的类型有 JPEG、PNG、BMP 等。 - `"image.jpg"`:图片的名称。 - `Units.toEMU(200)`:图片的宽度。这里使用 `Units.toEMU()` 将像素转换为 EMU(English Metric Unit)。 完整示例代码: ```java try (XWPFDocument document = new XWPFDocument()) { XWPFParagraph paragraph = document.createParagraph(); XWPFRun run = paragraph.createRun(); String imagePath = "path/to/image.jpg"; InputStream imageStream = new FileInputStream(imagePath); run.addPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(200), Units.toEMU(200)); FileOutputStream outputStream = new FileOutputStream("path/to/output.docx"); document.write(outputStream); } catch (IOException e) { e.printStackTrace(); } ``` 注意:使用 Apache POI 插入图片的功能需要使用到 XWPFDocument 类,所以需要导入 poi-ooxml 包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值