最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Poi-tl 簡(jiǎn)介

Poi-tl 是基于 Apache POI 的 Java 開源文檔處理庫(kù),專注于高效操作 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 依賴配置

<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)簽名稱}}。

示例標(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文檔圖片插入工具類
 * 功能:通過(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í)別圖片類型(此處顯式指定為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)文章

  • Java使用kafka發(fā)送和生產(chǎn)消息的示例

    Java使用kafka發(fā)送和生產(chǎn)消息的示例

    本篇文章主要介紹了Java使用kafka發(fā)送和生產(chǎn)消息的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • SpringBoot使用easy-captcha 實(shí)現(xiàn)驗(yàn)證碼登錄功能(解決思路)

    SpringBoot使用easy-captcha 實(shí)現(xiàn)驗(yàn)證碼登錄功能(解決思路)

    文章介紹了如何使用Spring Boot和Easy-Captcha實(shí)現(xiàn)驗(yàn)證碼登錄功能,后端通過(guò)Easy-Captcha生成驗(yàn)證碼并存儲(chǔ)在Redis中,前端獲取驗(yàn)證碼并顯示給用戶,登錄時(shí),前端將用戶輸入的驗(yàn)證碼和標(biāo)識(shí)符發(fā)送到后端進(jìn)行驗(yàn)證,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • java分布式緩存方案

    java分布式緩存方案

    本文簡(jiǎn)單介紹了緩存的種類,緩存常見的問(wèn)題,對(duì)大家的學(xué)習(xí)和工作有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2021-08-08
  • SWT(JFace) 體驗(yàn)之FontRegistry

    SWT(JFace) 體驗(yàn)之FontRegistry

    測(cè)試代碼如下:
    2009-06-06
  • Java中成員方法與成員變量訪問(wèn)權(quán)限詳解

    Java中成員方法與成員變量訪問(wèn)權(quán)限詳解

    在Java學(xué)習(xí)過(guò)程中,在寫類經(jīng)常為用到public,private和protected,我個(gè)人的經(jīng)驗(yàn)是一般類的成員變量都是用private,方法用public,類的內(nèi)部用protected方法,如果是存在子類的,那我就會(huì)把父類中的成員變量變?yōu)閜rotected。(其余的看具體實(shí)際情 況而定)
    2015-08-08
  • Springmvc nginx實(shí)現(xiàn)動(dòng)靜分離過(guò)程詳解

    Springmvc nginx實(shí)現(xiàn)動(dòng)靜分離過(guò)程詳解

    這篇文章主要介紹了Springmvc nginx實(shí)現(xiàn)動(dòng)靜分離過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 一文弄懂Mybatis中介者模式

    一文弄懂Mybatis中介者模式

    本文主要介紹了一文弄懂Mybatis中介者模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • @RequestParam 參數(shù)偶爾丟失的解決

    @RequestParam 參數(shù)偶爾丟失的解決

    這篇文章主要介紹了@RequestParam 參數(shù)偶爾丟失的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • MyBatis核心配置文件深入分析

    MyBatis核心配置文件深入分析

    這篇文章主要介紹了MyBatis核心配置文件,MyBatis的前身就是iBatis,iBatis本是由Clinton Begin開發(fā),后來(lái)捐給Apache基金會(huì),成立了iBatis開源項(xiàng)目。2010年5月該項(xiàng)目由Apahce基金會(huì)遷移到了Google Code,并且改名為MyBatis
    2022-12-12
  • macbook中springboot的jmeter壓測(cè)示例

    macbook中springboot的jmeter壓測(cè)示例

    這篇文章主要介紹了macbook中springboot的jmeter壓測(cè)示例詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

临海市| 从江县| 康定县| 南木林县| 安阳市| 武隆县| 阿坝县| 独山县| 洪江市| 永安市| 神池县| 皮山县| 江川县| 松阳县| 西吉县| 东光县| 林周县| 新建县| 延川县| 上栗县| 贡觉县| 嘉定区| 纳雍县| 孝义市| 连平县| 岫岩| 平凉市| 醴陵市| 德化县| 观塘区| 紫阳县| 杭锦旗| 登封市| 平果县| 阿城市| 古田县| 当雄县| 达日县| 进贤县| 永新县| 潼关县|