/**

* 写入图片

* @param document

* @param picName

* @param width

* @param height

* @param alignment

*/

private void WriteImage(CustomXWPFDocument document, String picName, int width, int height, ParagraphAlignment alignment) {

try {

CustomXWPFDocument document= new CustomXWPFDocument();

XWPFParagraph imgPara = document.createParagraph();

imgPara.setAlignment(alignment);

int format = XWPFDocument.PICTURE_TYPE_PNG;

if(picName.endsWith(".emf")) format = XWPFDocument.PICTURE_TYPE_EMF;

else if(picName.endsWith(".wmf")) format = XWPFDocument.PICTURE_TYPE_WMF;

else if(picName.endsWith(".pict")) format = XWPFDocument.PICTURE_TYPE_PICT;

else if(picName.endsWith(".jpeg") || picName.endsWith(".jpg")) format = XWPFDocument.PICTURE_TYPE_JPEG;

else if(picName.endsWith(".png")) format = XWPFDocument.PICTURE_TYPE_PNG;

else if(picName.endsWith(".dib")) format = XWPFDocument.PICTURE_TYPE_DIB;

else if(picName.endsWith(".gif")) format = XWPFDocument.PICTURE_TYPE_GIF;

else if(picName.endsWith(".tiff")) format = XWPFDocument.PICTURE_TYPE_TIFF;

else if(picName.endsWith(".eps")) format = XWPFDocument.PICTURE_TYPE_EPS;

else if(picName.endsWith(".bmp")) format = XWPFDocument.PICTURE_TYPE_BMP;

else if(picName.endsWith(".wpg")) format = XWPFDocument.PICTURE_TYPE_WPG;

XWPFRun stdMarkRun = imgPara.createRun();

stdMarkRun.addBreak();

String blipId = imgPara.getDocument().addPictureData(new FileInputStream(new File(picName)),format);

document.createPicture(blipId,document.getNextPicNameNumber(format),width,height, imgPara);

}catch (Exception e) {

e.printStackTrace();

}

}

/**

*创建自定义Java类继承自XWPFDocument

*/

class CustomXWPFDocument extends XWPFDocument {

public CustomXWPFDocument() {

super();

}

public CustomXWPFDocument(InputStream in) throws IOException {

super(in);

}

public CustomXWPFDocument(OPCPackage pkg) throws IOException {

super(pkg);

}

public void createPicture(String blipId, int id, int width, int height,

XWPFParagraph paragraph) {

final int EMU = 9525;

width *= EMU;

height *= EMU;

// String blipId =

// getAllPictures().get(id).getPackageRelationship().getId();

if (paragraph == null) {

paragraph = createParagraph();

}

CTInline inline = paragraph.createRun().getCTR().addNewDrawing()

.addNewInline();

String picXml = ""

+ ""

+ "   "

+ "      "

+ "         " + "

+ id

+ "\" name=\"img_"

+ id

+ "\"/>"

+ "            "

+ "

"

+ "         "

+ "

+ blipId

+ "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"

+ "            "

+ "               "

+ "            "

+ "         "

+ "         "

+ "            "

+ "               "

+ "

+ width

+ "\" cy=\""

+ height

+ "\"/>"

+ "            "

+ "            "

+ "               "

+ "            "

+ "         "

+ "      "

+ "   " + "";

// CTGraphicalObjectData graphicData =

// inline.addNewGraphic().addNewGraphicData();

XmlToken xmlToken = null;

try {

xmlToken = XmlToken.Factory.parse(picXml);

} catch (XmlException xe) {

xe.printStackTrace();

}

inline.set(xmlToken);

// graphicData.set(xmlToken);

inline.setDistT(0);

inline.setDistB(0);

inline.setDistL(0);

inline.setDistR(0);

CTPositiveSize2D extent = inline.addNewExtent();

extent.setCx(width);

extent.setCy(height);

CTNonVisualDrawingProps docPr = inline.addNewDocPr();

docPr.setId(id);

docPr.setName("docx_img_ " + id);

docPr.setDescr("docx Picture");

}

public void createPictureCxCy(String blipId, int id, long cx, long cy) {

CTInline inline = createParagraph().createRun().getCTR()

.addNewDrawing().addNewInline();

String picXml = ""

+ ""

+ "   "

+ "      "

+ "         " + "

+ id

+ "\" name=\"Generated\"/>"

+ "            "

+ "

"

+ "         "

+ "

+ blipId

+ "\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"

+ "            "

+ "               "

+ "            "

+ "         "

+ "         "

+ "            "

+ "               "

+ "

+ cx

+ "\" cy=\""

+ cy

+ "\"/>"

+ "            "

+ "            "

+ "               "

+ "            "

+ "         "

+ "      "

+ "   " + "";

// CTGraphicalObjectData graphicData =

// inline.addNewGraphic().addNewGraphicData();

XmlToken xmlToken = null;

try {

xmlToken = XmlToken.Factory.parse(picXml);

} catch (XmlException xe) {

xe.printStackTrace();

}

inline.set(xmlToken);

// graphicData.set(xmlToken);

inline.setDistT(0);

inline.setDistB(0);

inline.setDistL(0);

inline.setDistR(0);

CTPositiveSize2D extent = inline.addNewExtent();

extent.setCx(cx);

extent.setCy(cy);

CTNonVisualDrawingProps docPr = inline.addNewDocPr();

docPr.setId(id);

docPr.setName("docx_img_ " + id);

docPr.setDescr("docx Picture");

}

}

java poi导出word图片_poi 导出word,导出图片解决方法相关推荐

  1. 解决 Java poi 3.8 等版本 操作 word 插入 图片 不成功的问题

    解决 Java poi 3.8等版本操作word插入图片不成功的问题 问题: 最近有一个需求是将Excel中的数据转换到word中,其中包括了文字和图片, 在使用 poi 3.8 向word中写入图片 ...

  2. word转pdf后书签目录失效解决方法

    word转pdf后书签目录失效解决方法 安装Acrobat和AutoBookmark,Acrobat自己上网找,AutoBookmark链接放下面 链接: https://pan.baidu.com/ ...

  3. 计算机word文档无法工作,word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料)...

    word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料),哪吒游戏网给大家带来详细的word无法打开(WORD文档打不开_解决方法_电脑基础知识_IT/计算机_专业资料) ...

  4. 关于FreeMarker生成word文档后转换为pdf得解决方法及常见问题

    关于FreeMarker生成word文档后转换为pdf得解决方法及常见问题 最近在做一个项目要求之前下载出的word简历直接变成pdf 格式进行展现.因为格式比较复杂,所以采用的时模板并用Freema ...

  5. Office word 2007不能另存为pdf格式的解决方法

    Office word 2007不能另存为pdf格式的解决方法 参考文章: (1)Office word 2007不能另存为pdf格式的解决方法 (2)https://www.cnblogs.com/ ...

  6. excel php 数字科学计数_PHP导出excel时数字变为科学计数的解决方法

    在数据导出到excel时数字格式不对,一般分为以下两种情况. 1.excel单元格设置长度不够 解决方法: $objActSheet = $objPHPExcel->getActiveSheet ...

  7. Word2007“由于文件许可权错误,Word无法完成保存操作”问题的解决方法

    Word2007"由于文件许可权错误,Word无法完成保存操作"问题的解决方法操作系统windows xp sp3杀毒软件: 金山毒霸word 2007保存文件提示"由于 ...

  8. 打开WORD文档时提示“word无法启动转换器mswrd632 wpc”的解决方法

    打开 WORD 文档时提示" word 无法启动转换器 mswrd632 wpc "的解决方法 因为之前安装的是精简版的 office 2003 ,导致系统找不到这个文件,出现标题 ...

  9. 打开word会自动出现页眉的解决方法

    打开word会自动出现页眉的解决方法 文章目录 打开word会自动出现页眉的解决方法 1. 问题描述 2. 解决方法 1. 问题描述 当没有其他word文档打开时,新建并打开一个word文档,并不会自 ...

  10. word中遇到复制粘贴无法使用的解决方法

    通常我们使用MathType的时候,会在word中遇到复制粘贴无法使用的解决方法: 1.在MathType的安装目录下找到MathPage.wll(在MathPage文件夹中)和MathType Co ...

最新文章

  1. 逆向工程核心原理学习笔记(十一):栈
  2. Android之ScrollView设置了高度(android:layout_height=“match_parent“)但里面的组件不能充满问题
  3. 10鼎信诺为什么安装不了_鼎信诺审计软件一周常见问题(4.134.17)
  4. java udp ip端口 设置_UDP端口扫描Java只找到1个开放的UDP端口
  5. 计算机音乐创作是什么,2021计算机音乐创作的作曲方式探究论文
  6. 建设自己拥有的B2C网站一般需要什么样的插件以及大体花费
  7. 如何避免ASP.NET网页初次加载缓慢
  8. python人门指南小说-致Python初学者 Anaconda入门使用指南完整版
  9. Oracle 补丁体系 及 opatch 工具 介绍
  10. 473.火柴拼正方形
  11. 天翼校园客户端“中毒”,江苏、广东、湖南成重灾区
  12. 从Zachman企业架构框架想到的
  13. JS中的迭代器和生成器
  14. ps基础学习:图层叠加
  15. 关于海康威视网络摄像机二次开发问题
  16. seo与sem的关系和区别
  17. UBR/CBR/VBR
  18. 饥荒为啥显示专用服务器,饥荒服务器和专用服务器有什么区别 | 手游网游页游攻略大全...
  19. android拍照保存照片方向,Android:Camera2开发详解(上):实现预览、拍照、保存照片等功能...
  20. google多开设置

热门文章

  1. linux脚本if then,shell里if-then的使用
  2. 战狼团之华为鸿蒙,华为鸿蒙目标一年跨过生死线
  3. 三款好用的软件代码检测工具
  4. Bell State 贝尔态基本原理
  5. 备战NOIP2018(时间已不够用系列)!!!怀挺!!!!!!
  6. CentOS 7.9 离线软件包下载
  7. 输出所有形如aabb的四位完全平方数
  8. 酷派勇夺4G第一,高端机型值得期待
  9. 为程序员带来 CRUD 的女人 | 历史上的今天
  10. Linux学习(一):基本概念