栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Word文档中插入图片

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Word文档中插入图片

首先,我想指出apache poi-
link提供的示例,即正确的方法是

doc.createParagraph().createRun().addPicture(new FileInputStream(imgFile), format, imgFile, Units.toEMU(200), Units.toEMU(200));

但是,仍然存在一个现有错误,在执行上述语句后,该.docx文件将变得不可读。可能很快会解决,在这种情况下,上述声明将起作用。同时,有一种解决方法。

首先,生成没有任何图片的docx文件。然后将此类添加

CustomXWPFdocument
到您的包中。

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;import java.io.IOException;import java.io.InputStream;public class CustomXWPFdocument extends XWPFdocument{    public CustomXWPFdocument(InputStream in) throws IOException    {        super(in);    }    public void createPicture(String blipId,int id, int width, int height)    {        final int EMU = 9525;        width *= EMU;        height *= EMU;        //String blipId = getAllPictures().get(id).getPackageRelationship().getId();        CTInline inline = createParagraph().createRun().getCTR().addNewDrawing().addNewInline();        String picXml = "" +     "<a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">" +     "   <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">" +     "      <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">" +     "         <pic:nvPicPr>" +     " <pic:cNvPr id="" + id + "" name="Generated"/>" +     " <pic:cNvPicPr/>" +     "         </pic:nvPicPr>" +     "         <pic:blipFill>" +     " <a:blip r:embed="" + blipId + "" xmlns:r="http://schemas.openxmlformats.org/officedocument/2006/relationships"/>" +     " <a:stretch>" +     "    <a:fillRect/>" +     " </a:stretch>" +     "         </pic:blipFill>" +     "         <pic:spPr>" +     " <a:xfrm>" +     "    <a:off x="0" y="0"/>" +     "    <a:ext cx="" + width + "" cy="" + height + ""/>" +     " </a:xfrm>" +     " <a:prstGeom prst="rect">" +     "    <a:avLst/>" +     " </a:prstGeom>" +     "         </pic:spPr>" +     "      </pic:pic>" +     "   </a:graphicData>" +     "</a:graphic>";        //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("Picture " + id);        docPr.setDescr("Generated");    }}

然后,通过添加图片来创建更新的文档,如下所示:-

CustomXWPFdocument document = new CustomXWPFdocument(new FileInputStream(new File("C:\Users\Avarice\Desktop\doc1.docx")));        FileOutputStream fos = new FileOutputStream(new File("C:\Users\Avarice\Desktop\doc2.docx"));        String id = document.addPictureData(new FileInputStream(new File("C:\Users\Avarice\Desktop\thumbnail.jpg")), document.PICTURE_TYPE_JPEG);        document.createPicture(id,document.getNextPicNameNumber(document.PICTURE_TYPE_JPEG), 64, 64);        document.write(fos);        fos.flush();        fos.close();

您还应该在构建路径中包含以下jar:

poi-ooxml-schemas

xmlbeans

dom4j



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446538.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号