欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)在word中指定位置插入圖片

 更新時(shí)間:2025年06月11日 08:59:10   作者:cccl.  
Poi-tl?是基于?Apache?POI?的?Java?開(kāi)源文檔處理庫(kù),專(zhuān)注于高效操作?Word?文檔,本文小編就來(lái)和大家詳細(xì)講講Java如何使用Poi-tl實(shí)現(xiàn)在word中指定位置插入圖片吧

Poi-tl 簡(jiǎn)介

Poi-tl 是基于 Apache POI 的 Java 開(kāi)源文檔處理庫(kù),專(zhuān)注于高效操作 Word 文檔(.docx 格式)。它通過(guò)模板引擎機(jī)制簡(jiǎn)化復(fù)雜文檔生成流程,相比原生 POI 具備更簡(jiǎn)潔的 API、更強(qiáng)的靈活性和更優(yōu)的性能表現(xiàn),廣泛應(yīng)用于報(bào)表生成、合同模板填充、文檔批量處理等企業(yè)級(jí)場(chǎng)景。

Maven 依賴(lài)配置

<dependency>
    <groupId>com.deepoove</groupId>
    <artifactId>poi-tl</artifactId>
    <version>1.12.0</version>
</dependency>

Poi-tl 實(shí)現(xiàn)原理與步驟

1. 模板標(biāo)簽規(guī)范

在 Word 模板中需使用特定格式的占位符標(biāo)識(shí)圖片插入位置,標(biāo)準(zhǔn)格式為:{{@標(biāo)簽名稱(chēng)}}。

示例標(biāo)簽格式:

{{@Head}}  <!-- 審核人簽名位置 -->
{{@Approver}}  <!-- 批準(zhǔn)人簽名位置 -->

2.完整實(shí)現(xiàn)代碼

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureType;
import com.deepoove.poi.data.Pictures;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.Map;

/**
 * Word文檔圖片插入工具類(lèi)
 * 功能:通過(guò)Poi-tl在Word模板指定位置插入圖片
 */
public class WordImageInserter {

    /**
     * 主方法:執(zhí)行Word圖片插入操作
     */
    public static void main(String[] args) {
        Path templatePath = Path.of("D:\\template.docx");        // 源文檔模板路徑
        Path outputPath= Path.of("D:\\template_temp.docx"); // 新文件路徑
        Path inspectorImagePath = Path.of("D:\\signatures\\inspector.png"); // 審核人簽名圖片
        Path approverImagePath = Path.of("D:\\signatures\\approver.png");   // 批準(zhǔn)人簽名圖片

        try {
            // 綁定模板占位符與圖片渲染對(duì)象
            Map<String, Object> dataModel = new HashMap<>();
            dataModel.put("Head", createPicture(inspectorImagePath, 100, 50));     // 替換{{@Head}}標(biāo)簽
            dataModel.put("Approver", createPicture(approverImagePath, 100, 50)); // 替換{{@Approver}}標(biāo)簽

            // 執(zhí)行文檔渲染與圖片插入
            try (InputStream templateStream = Files.newInputStream(templatePath);
                 OutputStream tempOutputStream = Files.newOutputStream(tempOutputPath)) {

                // 編譯模板并渲染數(shù)據(jù)
                XWPFTemplate template = XWPFTemplate.compile(templateStream).render(dataModel);
                
                // 輸出到臨時(shí)文件(避免直接修改原文件導(dǎo)致?lián)p壞)
                template.write(tempOutputStream);
                template.close();
            }

            // 原子性替換原文件(保證操作完整性)
            Files.move(tempOutputPath, templatePath, StandardCopyOption.REPLACE_EXISTING);
            System.out.println("圖片插入操作完成,文檔已更新");

        } catch (IOException e) {
            System.err.println("文檔處理異常:" + e.getMessage());
            e.printStackTrace();
        }
    }

    /**
     * 構(gòu)建圖片渲染對(duì)象(支持尺寸自定義)
     * @param imagePath 圖片文件路徑
     * @param width 圖片寬度(像素)
     * @param height 圖片高度(像素)
     * @return 圖片渲染對(duì)象(可直接用于模板渲染)
     * @throws IOException 圖片讀取失敗時(shí)拋出
     */
    private static Object createPicture(Path imagePath, int width, int height) throws IOException {
        // 使用NIO流加載圖片,自動(dòng)識(shí)別圖片類(lèi)型(此處顯式指定為PNG)
        return Pictures.ofStream(Files.newInputStream(imagePath), PictureType.PNG)
                .size(width, height)  // 自定義圖片尺寸
                .create();           // 生成圖片渲染實(shí)體
    }
}

3.效果展示

到此這篇關(guān)于Java實(shí)現(xiàn)在word中指定位置插入圖片的文章就介紹到這了,更多相關(guān)Java word插入圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SSM框架流程及原理分析

    SSM框架流程及原理分析

    本文給大家分享小編一些心得體會(huì),主要是學(xué)習(xí)SSM框架之后的收獲吧,重點(diǎn)給大家介紹SSM框架流程以及原理分析,通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • java處理按鈕點(diǎn)擊事件的方法

    java處理按鈕點(diǎn)擊事件的方法

    下面小編就為大家?guī)?lái)一篇java處理按鈕點(diǎn)擊事件的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • JavaEE中volatile、wait和notify詳解

    JavaEE中volatile、wait和notify詳解

    這篇文章主要給大家介紹了關(guān)于JavaEE中volatile、wait和notify的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java class文件格式之屬性詳解_動(dòng)力節(jié)點(diǎn)java學(xué)院整理

    Java class文件格式之屬性詳解_動(dòng)力節(jié)點(diǎn)java學(xué)院整理

    這篇文章主要介紹了Java class文件格式之屬性詳解,需要的朋友可以參考下
    2017-06-06
  • 在Java8與Java7中HashMap源碼實(shí)現(xiàn)的對(duì)比

    在Java8與Java7中HashMap源碼實(shí)現(xiàn)的對(duì)比

    這篇文章主要介紹了在Java8與Java7中HashMap源碼實(shí)現(xiàn)的對(duì)比,內(nèi)容包括HashMap 的原理簡(jiǎn)單介紹、結(jié)合源碼在Java7中是如何解決hash沖突的以及優(yōu)缺點(diǎn),結(jié)合源碼以及在Java8中如何解決hash沖突,balance tree相關(guān)源碼介紹,需要的朋友可以參考借鑒。
    2017-01-01
  • 走進(jìn)JDK之不可變類(lèi)String

    走進(jìn)JDK之不可變類(lèi)String

    這篇文章主要給大家介紹了JDK之不可變類(lèi)String的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JDK具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 單例模式 分析代碼優(yōu)化方法

    單例模式 分析代碼優(yōu)化方法

    這篇文章主要介紹了單例模式 分析代碼優(yōu)化方法,需要的朋友可以參考下
    2015-04-04
  • SpringMVC日期類(lèi)型參數(shù)傳遞實(shí)現(xiàn)步驟講解

    SpringMVC日期類(lèi)型參數(shù)傳遞實(shí)現(xiàn)步驟講解

    這篇文章主要介紹了SpringMVC日期類(lèi)型參數(shù)傳遞實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • JavaWeb中上傳和下載文件實(shí)例代碼

    JavaWeb中上傳和下載文件實(shí)例代碼

    這篇文章主要介紹了JavaWeb中上傳和下載文件實(shí)例代碼,需要的朋友可以參考下
    2017-06-06
  • Mybatis-Plus多種批量插入方案對(duì)比小結(jié)

    Mybatis-Plus多種批量插入方案對(duì)比小結(jié)

    在項(xiàng)目中優(yōu)化Mybatis-Plus批量插入性能是關(guān)鍵,通過(guò)比較不同方案,本文就來(lái)介紹一下Mybatis-Plus多種批量插入方案對(duì)比小結(jié),感興趣都的可以了解一下
    2024-10-10

最新評(píng)論