文檔中,可以通過圖文混排的方式來增加內容的可讀性,相比純文本文檔,在內容展現方式上也更具美觀性。在給文檔添加圖片時,可設置圖片的文本環繞方式、旋轉角度、圖片高度/寬度等;另外,也可對文檔中已有的圖片實現替換、刪除等操作。本文將從在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();}
}
圖片刪除效果:

(本文完)