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

java實(shí)現(xiàn)根據(jù)pdf模板生成文件并插入文字,選項(xiàng),簽名和公章

 更新時(shí)間:2024年11月03日 13:36:13   作者:小七蒙恩  
這篇文章主要為大家詳細(xì)介紹了java如何實(shí)現(xiàn)根據(jù)pdf模板生成文件并插入文字,選項(xiàng),簽名和公章,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

成果

使用word,制作一個(gè)模板

使用pdf編輯器,生成pdf模板

我這里使用福昕pdf編輯器,其他pdf編輯器(如Adobe Acrobat)也可以用但是大多要錢(qián)。

1.從做好的word導(dǎo)入來(lái)創(chuàng)建pdf

2.插入文字域

右鍵文字域,填入字段與屬性

3.插入選項(xiàng)域

導(dǎo)出值不要忘記填寫(xiě),與代碼對(duì)應(yīng)上。

導(dǎo)出值不要忘記填寫(xiě),與代碼對(duì)應(yīng)上。

4.插入圖片域,預(yù)插入簽名和公章

注意:外觀這里的邊框和填充都選無(wú)色,否則圖片會(huì)被填充色蓋??;

注意:選項(xiàng)這里我們選擇只顯示標(biāo)簽。

5.模板做好了,我們進(jìn)行保存

java 實(shí)現(xiàn)

引入依賴(lài)

		<!-- pdf -->
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itextpdf</artifactId>
			<version>5.5.13.2</version>
		</dependency>
		<!--中文字體-->
		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itext-asian</artifactId>
			<version>5.2.0</version>
		</dependency>
		<!--html xml 轉(zhuǎn)為pdf-->
		<dependency>
			<groupId>com.itextpdf.tool</groupId>
			<artifactId>xmlworker</artifactId>
			<version>5.5.11</version>
		</dependency>

代碼實(shí)現(xiàn)

package com.tencent.qcloud.roomservice.webrtc.utils;

import com.alibaba.fastjson.JSONObject;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;

/**
 * @author dume
 * @ClassName PdfTest
 * @description: pdf模板操作
 * @date 2024年07月26日
 * @version: 1.0
 */
public class PdfTest {

    public static void main(String[] args) {
        //測(cè)試執(zhí)行
        FillTemplate(
                "C:\\test\\申請(qǐng)表.pdf",
                "C:\\test\\新申請(qǐng)表.pdf",
                "杜小七",
                "遼寧大連",
                "跑步",
                "Yes",
                "Yes",
                "Yes",
                "C:\\test\\電子簽名.png",
                "C:\\test\\公章.png"
        );
    }

    /**
     * 根據(jù)模板生成pdf
     * @param sourcesPath 原文件路徑
     * @param targetPath  生成文件路徑
     * @param name     參數(shù)
     * @param address  參數(shù)
     * @param hobby    參數(shù)
     * @param select_1  選項(xiàng)
     * @param select_2  選項(xiàng)
     * @param select_3  選項(xiàng)
     * @param signPath  簽名圖片路徑
     * @param gongzhangPath  公章圖片路徑
     */
    public static void FillTemplate(
            String sourcesPath,
            String targetPath,
            String name,
            String address,
            String hobby,
            String select_1,
            String select_2,
            String select_3,
            String signPath,
            String gongzhangPath
            ){

        //設(shè)置參數(shù)
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name",name);
        jsonObject.put("address",address);
        jsonObject.put("hobby",hobby);
        jsonObject.put("select_1",select_1);
        jsonObject.put("select_2",select_2);
        jsonObject.put("select_3",select_3);
        // 填充創(chuàng)建pdf
        PdfReader reader = null;
        PdfStamper stamp = null;
        ByteArrayOutputStream baos =null;
        try {
            reader = new PdfReader( sourcesPath);
            File deskFile = new File(targetPath);
            stamp = new PdfStamper(reader, new FileOutputStream(deskFile));
            // 取出報(bào)表模板中的所有字段
            AcroFields form = stamp.getAcroFields();
            System.out.println(form.getFields().keySet());


            //設(shè)置宋體
            BaseFont song =BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            if (jsonObject != null) {
                for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
                    String key = entry.getKey();
                    String value = entry.getValue().toString();
                    //保存選項(xiàng)
                    if (key.startsWith("select")) {
                        form.setField(key, value, true);
                    //保存文字
                    }else {
                        form.setFieldProperty(key, "textfont", song, null);
                        form.setField(key, value);
                    }
                }
            }

            //插入簽名
            insertImage(form,stamp,"sign",signPath);
            //插入公章
            insertImage(form,stamp,"gongzhang",gongzhangPath);
            //保存修改
            stamp.setFormFlattening(true);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (stamp != null) {
                try{
                    stamp.close();
                }catch (Exception e){
                    e.printStackTrace();
                }

            }
            if (reader != null) {
                try{
                    reader.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
            if (baos != null) {
                try{
                    baos.close();
                }catch (Exception e){
                    e.printStackTrace();
                }

            }
        }

    }

    /**
     * pdf模板插入圖片
     * @param form
     * @param stamper
     * @param filedName
     * @param url
     * @return
     */
    public  static boolean insertImage(AcroFields form, PdfStamper stamper, String filedName, String url) {
        try {
            int pageNo = form.getFieldPositions(filedName).get(0).page;
            Rectangle signRect = form.getFieldPositions(filedName).get(0).position;
            float x = signRect.getLeft();
            float y = signRect.getBottom();

            Image image = Image.getInstance(url);
            // 獲取操作的頁(yè)面
            PdfContentByte under = stamper.getOverContent(pageNo);
            // 根據(jù)域的大小縮放圖片
            image.scaleToFit(signRect.getWidth(), signRect.getHeight());
            // 添加圖片
            image.setAbsolutePosition(x, y);
            under.addImage(image);
        }catch (Exception e){
            return false;
        }
        return true;
    }
}

執(zhí)行測(cè)試

以上就是java實(shí)現(xiàn)根據(jù)pdf模板生成文件并插入文字,選項(xiàng),簽名和公章的詳細(xì)內(nèi)容,更多關(guān)于java pdf模板生成文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java?部署Jenkins?Pipeline?構(gòu)建?Java?項(xiàng)目的流程(自動(dòng)化)

    Java?部署Jenkins?Pipeline?構(gòu)建?Java?項(xiàng)目的流程(自動(dòng)化)

    本文將深入探討如何使用Jenkins?Pipeline來(lái)自動(dòng)化構(gòu)建、測(cè)試和部署一個(gè)典型的Java項(xiàng)目,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-04-04
  • IntelliJ IDEA使用maven實(shí)現(xiàn)tomcat的熱部署

    IntelliJ IDEA使用maven實(shí)現(xiàn)tomcat的熱部署

    這篇文章主要介紹了IntelliJ IDEA使用maven實(shí)現(xiàn)tomcat的熱部署,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • SpringBoot Admin的簡(jiǎn)單使用的方法步驟

    SpringBoot Admin的簡(jiǎn)單使用的方法步驟

    本文主要介紹了SpringBoot Admin的簡(jiǎn)單使用的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java操作XML轉(zhuǎn)JSON數(shù)據(jù)格式詳細(xì)代碼實(shí)例

    Java操作XML轉(zhuǎn)JSON數(shù)據(jù)格式詳細(xì)代碼實(shí)例

    在Java中我們可以使用一些現(xiàn)成的庫(kù)來(lái)實(shí)現(xiàn)XML到JSON的轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于Java操作XML轉(zhuǎn)JSON數(shù)據(jù)格式的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • Spring Boot 常用注解詳解與使用最佳實(shí)踐建議

    Spring Boot 常用注解詳解與使用最佳實(shí)踐建議

    這篇文章主要介紹了Spring Boot 常用注解詳解與使用最佳實(shí)踐建議,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-05-05
  • 利用Java異常機(jī)制實(shí)現(xiàn)模擬借書(shū)系統(tǒng)

    利用Java異常機(jī)制實(shí)現(xiàn)模擬借書(shū)系統(tǒng)

    這篇文章主要給大家介紹了利用Java異常機(jī)制實(shí)現(xiàn)模擬借書(shū)系統(tǒng)的相關(guān)資料,文中先對(duì)java異常機(jī)制進(jìn)行了簡(jiǎn)單介紹,而后通過(guò)示例代碼介紹了java語(yǔ)言是如何實(shí)現(xiàn)一個(gè)控制臺(tái)版的模擬借書(shū)系統(tǒng),需要的朋友可以參考學(xué)習(xí),一起來(lái)看看吧。
    2017-04-04
  • springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法

    springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法

    RPC框架大家或多或少都用過(guò),出自于阿里系的就有dubbo,HSF,sofaRPC等,今天通過(guò)本文給大家介紹springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法,感興趣的朋友一起看看吧
    2022-03-03
  • IDEA 2020.1.1好用的plugins插件推薦

    IDEA 2020.1.1好用的plugins插件推薦

    這篇文章主要介紹了IDEA 2020.1.1好用的plugins插件推薦,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java docx4j實(shí)現(xiàn)Word到PDF轉(zhuǎn)換的完整指南

    Java docx4j實(shí)現(xiàn)Word到PDF轉(zhuǎn)換的完整指南

    本文介紹了如何使用docx4j這個(gè)開(kāi)源Java庫(kù)來(lái)將Microsoft Word的.docx文檔轉(zhuǎn)換為PDF格式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-02-02
  • 解析SpringBoot @EnableAutoConfiguration的使用

    解析SpringBoot @EnableAutoConfiguration的使用

    這篇文章主要介紹了解析SpringBoot @EnableAutoConfiguration的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論

琼海市| 沭阳县| 尖扎县| 巴东县| 建水县| 佛冈县| 三都| 武定县| 永昌县| 贺兰县| 龙口市| 黔南| 定襄县| 辰溪县| 新巴尔虎左旗| 呼伦贝尔市| 长兴县| 玉树县| 佳木斯市| 叶城县| 苏尼特右旗| 邳州市| 余姚市| 鄯善县| 慈溪市| 鹤峰县| 马关县| 白河县| 丰县| 沂水县| 南溪县| 三河市| 鹿泉市| 阳曲县| 丹东市| 容城县| 城步| 临夏县| 雷州市| 宣汉县| 通渭县|