文档中,可以通过图文混排的方式来增加内容的可读性,相比纯文本文档,在内容展现方式上也更具美观性。在给文档添加图片时,可设置图片的文本环绕方式、旋转角度、图片高度/宽度等;另外,也可对文档中已有的图片实现替换、删除等操作。本文将从在Word文档中添加、替换、删除图片等三个操作需求来介绍。具体代码可参考以下示例。
工具使用:Free Spire.Doc for Java(免费版)
Jar文件获取方法:
方法1:通过官网下载jar文件包。下载后,解压文件;解压后,将lib文件夹下的Spire.Doc.jar导入java程序。如下图:
方法2:可通过maven安装导入。
【示例1】添加图片到Word
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.documents.TextWrappingStyle;
import com.spire.doc.fields.DocPicture;public class AddPicture {public static void main(String[] args) {//加载文档Document doc = new Document();doc.loadFromFile("test.docx");//获取第二段Paragraph para = doc.getSections().get(0).getParagraphs().get(1);//添加图片,并设置图片高、宽、旋转角度、文本环绕方式DocPicture picture = para.appendPicture("tp.png");picture.setHeight(150);picture.setWidth(200);picture.setRotationEx(30);picture.setTextWrappingStyle(TextWrappingStyle.Inline);;//保存文档doc.saveToFile("AddPicture.docx",FileFormat.Docx_2013);doc.dispose();}
}
图片添加效果:
【示例2】替换Word中的图片
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;public class ReplacePicture {public static void main(String[] args) {//加载Word文档Document doc = new Document();doc.loadFromFile("sample.docx");//获取文档中的指定段落Section section = doc.getSections().get(0);Paragraph para = section.getParagraphs().get(0);//替换段落中的第一张图片Object obj = para.getChildObjects().get(0);if(obj instanceof DocPicture){DocPicture pic = (DocPicture)obj;pic.loadImage("tp.png");}/*//批量替换图片for(int i =0;i < section.getParagraphs().getCount();i++){Object obj = section.getParagraphs().get(i).getChildObjects();if(obj instanceof DocPicture){DocPicture pic = (DocPicture)obj;pic.loadImage("tp.png");}}*///保存结果文档doc.saveToFile("ReplaceWithImage.docx", FileFormat.Docx_2013);doc.dispose();}
}
图片替换效果:
【示例3】删除Word中的图片
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;public class DeletePicture {public static void main(String[] args) {//加载测试文档Document doc = new Document();doc.loadFromFile("sample.docx");//获取段落Section sec = doc.getSections().get(0);Paragraph para = sec.getParagraphs().get(0);//获取段落中的图片对象,删除DocPicture picture = (DocPicture) para.get(0);para.getChildObjects().remove(picture);/*//批量删除所有图片for (int i = 0 ; i < sec.getParagraphs().getCount(); i++){Paragraph para = sec.getParagraphs().get(i);for (int j = 0; j< para.getChildObjects().getCount();j++) {Object obj = para.getChildObjects().get(j);if(obj instanceof DocPicture){DocPicture pic = (DocPicture)obj;para.getChildObjects().remove(pic);}}}*///保存结果文档doc.saveToFile("DeletePictures.docx", FileFormat.Docx_2013);doc.dispose();}
}
图片删除效果:
(本文完)