Java利用Spire.Doc for Java实现在Word文档中插入图片

 更新时间:2025年10月11日 10:06:33   作者:用户033212666367  
本文将深入探讨如何利用 Spire.Doc for Java 这一强大库,在 Java 程序中高效、灵活地实现 Word 文档的图片插入功能,包括不同环绕方式和指定位置的插入,有需要的小伙伴可以了解下

在现代企业应用和个人开发中,Java 应用程序与 Office 文档的交互越来越频繁。其中,在 Word 文档中动态插入图片是一项常见的需求,例如生成报告、合同或自动化文档。然而,手动操作效率低下且难以规模化。本文将深入探讨如何利用 Spire.Doc for Java 这一强大库,在 Java 程序中高效、灵活地实现 Word 文档的图片插入功能,包括不同环绕方式和指定位置的插入。本教程将提供详细的步骤和可直接运行的代码示例,助您轻松掌握这一核心技能。

准备工作:集成 Spire.Doc for Java 库

Spire.Doc for Java 是一个专业的 Java Word 组件,专为 Java 应用程序设计,用于创建、读取、写入、转换和打印 Word 文档。它支持 DOC、DOCX、RTF、TXT、HTML 等多种格式,并提供了丰富的 API 来操作文档元素,如文本、图片、表格、段落、样式等。

为了在您的 Java 项目中使用 Spire.Doc for Java,您需要将其集成到您的构建路径中。以下是两种常见的集成方式:

Maven 依赖配置

如果您使用 Maven 作为项目管理工具,只需在项目的 pom.xml 文件中添加以下依赖项即可:

  <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.9.19</version>
    </dependency>
</dependencies>

注意:请将 版本号 替换为 Spire.Doc for Java 的最新稳定版本。您可以在 e-iceblue 官方网站或 Maven 仓库中查找最新版本信息。

下载 JAR 包手动导入 (备选)

如果您不使用 Maven,也可以从 Spire.Doc for Java 官网下载其 JAR 包,然后手动将其添加到项目的构建路径(Build Path)中。但推荐使用 Maven,因为它们能更好地管理依赖和版本。

完成上述配置后,您的项目就已经成功集成了 Spire.Doc for Java 库,为后续的 Word 文档操作奠定了基础。

以特定环绕方式插入图片

在 Word 文档中,图片与文本之间的相对位置和排版方式被称为“环绕方式”。理解并正确设置环绕方式对于生成美观且专业的文档至关重要。常见的环绕方式包括:

  • 嵌入型 (Inline with Text) :图片被视为文本的一部分,随着文本的移动而移动。
  • 浮动型 (Floating) :图片独立于文本,可以自由定位,文本会围绕图片流动。
  • 紧密型 (Tight) :文本紧密地环绕图片的轮廓。
  • 衬于文字下方 (Behind Text) :图片位于文本下方,被文本覆盖。
  • 浮于文字上方 (In Front of Text) :图片位于文本上方,覆盖文本。

下面我们将演示如何使用 Spire.Doc for Java 以嵌入型和浮动型两种方式插入图片,并设置其大小和位置。

import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;

public class insertImage {
    public static void main(String[] args) throws Exception {
        //创建 Document 类的对象
        Document doc = new Document();

        //从磁盘载入 Word 文件
        doc.loadFromFile("D:/Samples/Sample.docx");

        //创建 DocPicture 类的对象
        DocPicture picture = new DocPicture(doc);

        //从磁盘加载图片
        picture.loadImage("D:/Samples/System.png");

        //设置图片大小
        picture.setWidth(75);
        picture.setHeight(90);

        //将图片文本环绕方式设置为四周环绕
        picture.setTextWrappingStyle( TextWrappingStyle.Square);

        //将图片插入到第二段
        doc.getSections().get(0).getParagraphs().get(1).getChildObjects().insert(0,picture);

        //保存文档
        doc.saveToFile("D:/javaOutput/insertImage.docx", FileFormat.Docx);
    }
}

代码说明

  • doc.loadFromFile():加载一个源文档。
  • DocPicture picture = new DocPicture(doc):创建一个 DocPicture 类的对象。
  • picture.loadImage():加载图片。
  • picture.setTextWrappingStyle( TextWrappingStyle.Square):插入图片并设置文本环绕为四周环绕。
  • doc.getSections().get(0).getParagraphs().get(1).getChildObjects().insert(0,picture):将图片插入到特定位置,此处插入到第二个段落。

在指定位置插入图片

除了环绕方式,将图片插入到文档中的精确位置也是一个常见的需求,例如在某个特定段落的开头、在某个文本标记处,或者在书签位置。Spire.Doc for Java 提供了多种方式来实现这一点。

import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;

public class insertImage {
    public static void main(String[] args) throws Exception {
        //创建 Document 类的对象
        Document doc = new Document();

        //从磁盘加载 Word 文档
        doc.loadFromFile("D:/Samples/Sample.docx");

        //创建 DocPicture 类的对象
        DocPicture picture = new DocPicture(doc);

        //从磁盘加载图片
        picture.loadImage("D:/Samples/PDF.png");

        //设置图片的大小
        picture.setWidth(75);
        picture.setHeight(90);

        //将图片的文本环绕方式设置为四周环绕
        picture.setTextWrappingStyle( TextWrappingStyle.Square);

        //将图片插入到第二段
        doc.getSections().get(0).getParagraphs().get(2).getChildObjects().insert(0,picture);

        //设置图片的位置
        picture.setHorizontalPosition(370.0F);
        picture.setVerticalPosition(10.0F);

        //保存文档
        doc.saveToFile("D:/javaOutput/insertImage.docx", FileFormat.Docx);
    }
}

代码说明:

  • new DocPicture(doc) 和 picture.loadImage():创建 DocPicture 对象并加载图片。
  • picture.setTextWrappingStyle( TextWrappingStyle.Square):插入图片并设置文本环绕为四周环绕。
  • doc.getSections().get(0).getParagraphs().get(2).getChildObjects().insert(0,picture):将图片插入到特定位置。
  • picture.setHorizontalPosition(370.0F); 和 picture.setVerticalPosition(10.0F);:确定图片的水平和垂直具体位置。

总结

通过本教程,我们深入探讨了如何利用 Spire.Doc for Java 库在 Java 应用程序中实现 Word 文档的图片插入功能。我们不仅学习了如何集成该库,还详细演示了如何以不同的环绕方式(如嵌入型、浮动型)以及在指定位置(如段落开头、特定文本前、书签处)插入图片。Spire.Doc for Java 的强大 API 提供了极高的灵活性和控制力,使得复杂的文档自动化任务变得简单高效。

掌握这些技能,您将能够轻松应对各种 Java Word 文档处理需求,极大地提升工作效率和应用程序的功能性。建议读者根据自身项目需求,进一步探索 Spire.Doc for Java 提供的其他高级功能,例如图片编辑、文本格式化、表格操作等,以构建更加完善的文档自动化解决方案。

到此这篇关于Java利用Spire.Doc for Java实现在Word文档中插入图片的文章就介绍到这了,更多相关Java Word插入图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java Git Commit Message使用规范

    Java Git Commit Message使用规范

    这篇文章主要介绍了Java Git Commit Message使用规范,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-08-08
  • java发送邮件的具体实现

    java发送邮件的具体实现

    这篇文章介绍了java发送邮件的具体实现,有需要的朋友可以参考一下
    2013-09-09
  • java 数据结构 冒泡排序实现代码

    java 数据结构 冒泡排序实现代码

    这篇文章主要介绍了java 数据结构 冒泡排序的相关资料,并附实例代码,有需要的小伙伴可以参考下
    2016-09-09
  • 自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)

    自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)

    在javaweb开发过程中,使用热部署神器 JRebel可以使class类还是更新spring配置文件都能立马见到效率,本文给大家介绍JRebel的两种安装方法,小编建议使用第二种方法,具体安装步骤跟随小编一起看看吧
    2021-06-06
  • IDEA去除掉代码中虚线、波浪线和下划线实线的方法

    IDEA去除掉代码中虚线、波浪线和下划线实线的方法

    初次安装使用IDEA,总是能看到导入代码后,出现很多的波浪线,下划线和虚线,这是IDEA给我们的一些提示和警告,但是有时候我们并不需要,反而会让人看着很不爽,这里简单记录一下自己的调整方法,供其他的小伙伴在使用的时候参考
    2024-09-09
  • SpringBoot过滤器如何获取POST请求的JSON参数

    SpringBoot过滤器如何获取POST请求的JSON参数

    这篇文章主要介绍了SpringBoot过滤器如何获取POST请求的JSON参数操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • RocketMQ中的消费模式和消费策略详解

    RocketMQ中的消费模式和消费策略详解

    这篇文章主要介绍了RocketMQ中的消费模式和消费策略详解,RocketMQ 是基于发布订阅模型的消息中间件,所谓的发布订阅就是说,consumer 订阅了 broker 上的某个 topic,当 producer 发布消息到 broker 上的该 topic 时,consumer 就能收到该条消息,需要的朋友可以参考下
    2023-10-10
  • java之使用多线程代替for循环(解决主线程提前结束问题)

    java之使用多线程代替for循环(解决主线程提前结束问题)

    这篇文章主要介绍了java之使用多线程代替for循环(解决主线程提前结束问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Spring事务管理配置文件问题排查

    Spring事务管理配置文件问题排查

    这篇文章主要介绍了Spring事务管理配置文件问题排查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • SpringMVC之返回JSON的三种方式

    SpringMVC之返回JSON的三种方式

    现在都是前后端分离了,后端只需要跟前端提供restful接口,所有接口都返回json格式数据即可,SpringMVC通常有3种方式向前端输出json格式数据,下面我们就来了解一下
    2023-06-06

最新评论