Word 文档通常包含图像,这些图像是增强文档美感的有用元素。但如果文档的整体设计发生变化时,现有的图像可能不再符合新的风格,用新的图片替换它们有助于保持文档的外观一致性。在本文中,您将学习如何使用 Spire.Doc for Java 替换 Word 文档中的图片。
安装 Spire.Doc for Java
首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。您可以从这个链接下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>13.10.6</version>
    </dependency>
</dependencies>
Java 用新图片替换 Word 中的图片
要将 Word 文档中的图像替换为其他图像,需要遍历文档中的元素,找到图像并将其添加到列表中,然后从列表中获取要替换的图像并调用 DocPicture.loadImage() 方法将其替换为加载的图像。具体步骤如下:
- 创建 Document 类的对象。
- 使用 Document.loadFromFile() 方法加载 Word 文档。
- 创建 ArrayList 实例。
- 遍历文档中的所有节。
- 遍历每个节中的所有段落。
- 遍历每个段落中的所有子对象。
- 查找图片并将其添加到列表中。
- 从列表中获取特定图片,然后使用 DocPicture.loadImage() 方法将其替换为另一张图片。
- 使用 Document.saveToFile() 方法保存结果文档。
- Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.util.ArrayList;
public class ReplaceImages {
    public static void main(String[] args) {
        //创建Document对象
        Document doc = new Document();
        //加载一个Word文档
        doc.loadFromFile("Word图片.docx");
        //创建ArrayList实例
        ArrayList<DocumentObject> pictures = new ArrayList();
        //遍历文档中所有节
        for (int i=0; i< doc.getSections().getCount();i++)
        {
            Section sec= doc.getSections().get(i);
            //遍历每一节中的所有段落
            for (int p=0; p< sec.getParagraphs().getCount();p++)
            {
                Paragraph para =sec.getParagraphs().get(p);
                //遍历每个段落中的所有子对象
                for (int o=0; o< para.getChildObjects().getCount();o++)
                {
                    DocumentObject docObj= para.getChildObjects().get(o);
                    //查找图片并将其添加到列表中
                    if (docObj.getDocumentObjectType() == DocumentObjectType.Picture)
                    {
                        pictures.add(docObj);
                    }
                }
            }
        }
        //用新图片替换列表中的第一张图片
        DocPicture picture = (DocPicture)pictures.get(0) ;
        picture.loadImage("图片.png");
        //保存结果文件
        doc.saveToFile("替换图片.docx", FileFormat.Docx);
    }
}
Java 用文本替换 Word 中的图片
Spire.Doc for Java 没有提供用文本替换图片的直接方法,但您可以通过在图片位置插入文本,然后从文档中删除图片来实现这一任务。
以下是如何用文本替换 Word 文档中的所有图像的步骤:
- 创建 Document 类的对象。
- 使用 Document.loadFromFile() 方法加载 Word 文档。
- 创建 ArrayList 实例。
- 遍历文档中的所有节。
- 遍历每个节中的所有段落。
- 遍历每个段落中的所有子对象。
- 查找图片并将其添加到列表中。
- 遍历列表中的图片。
- 使用 Paragraph.getChildObjects().indexOf() 方法获取段落中图片的索引。
- 创建 TextRange 实例,并通过 TextRange.setText() 方法为文本范围设置文本。
- 使用 Paragraph.getChildObjects().insert() 方法在图片位置插入文本。
- 使用 Paragraph.getChildObjects().remove() 方法从段落中删除图片。
- 使用 Document.saveToFile() 方法保存结果文档。
- Java
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.util.ArrayList;
public class replaceImageWithText {
    public static void main(String[] args) {
        //创建Document对象
        Document doc = new Document();
        //加载一个Word文档
        doc.loadFromFile("Word图片.docx");
        int j = 1;
        //遍历文档中所有节
        for (int i=0; i< doc.getSections().getCount();i++)
        {
            Section sec= doc.getSections().get(i);
            //遍历每一节中的所有段落
            for (int p=0; p< sec.getParagraphs().getCount();p++)
            {
                Paragraph para =sec.getParagraphs().get(p);
                //创建ArrayList实例
                ArrayList<DocumentObject> pictures = new ArrayList<DocumentObject>();
                //遍历每个段落中的所有子对象
                for (int o=0; o< para.getChildObjects().getCount();o++)
                {
                    DocumentObject docObj= para.getChildObjects().get(o);
                    //查找图片并将其添加到列表中
                    if (docObj.getDocumentObjectType() == DocumentObjectType.Picture)
                    {
                        pictures.add(docObj);
                    }
                }
                //遍历列表中的所有图像,并用文本 "这里是图-{图片索引}"替换它们
                for (int m=0; m<pictures.size();m++)
                {
                    DocumentObject pic= pictures.get(m);
                    int index = para.getChildObjects().indexOf(pic);
                    TextRange range = new TextRange(doc);
                    range.setText(String.format("这是图-%d", j));
                    para.getChildObjects().insert(index, range);
                    para.getChildObjects().remove(pic);
                    j++;
                }
            }
        }
        //保存结果文件
        doc.saveToFile("文本替换图片.docx", FileFormat.Docx);
    }
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 
    


 
					



