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

Java如何使用itext向PDF插入數(shù)據(jù)和圖片

 更新時間:2024年01月09日 10:05:56   作者:JXians  
最近項目中使用到Java實現(xiàn)寫入PDF文件,這篇文章主要給大家介紹了關于Java如何使用itext向PDF插入數(shù)據(jù)和圖片的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、下載Adobe Acrobat DC

二、制作模板

1、準備一個word模板,并轉換成PDF格式

2、使用Adobe Acrobat DC打開PDF文檔,并在右側搜索框搜索表單,點擊準備表單

3、點擊開始,制作PDF表單

4、掃描完成后如下圖,藍白色框就是可編輯表單

5、點擊表單編輯表單名稱以及插入時的字體大小樣式等,如果沒有設置字體大小,數(shù)據(jù)寫入時會將字體會根據(jù)表單的高度自適應大小

6、編輯完成后保存PDF模板

三、在Java中使用

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;

import java.io.*;

import java.nio.file.Files;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;

public class PDFUtil {

    private static void insertImage(AcroFields form, PdfStamper stamper, String filedName, String url) throws IOException, DocumentException {
        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);
        // 獲取操作的頁面
        PdfContentByte under = stamper.getOverContent(pageNo);
        // 根據(jù)域的大小縮放圖片
        image.scaleToFit(signRect.getWidth(), signRect.getHeight());
        // 添加圖片
        image.setAbsolutePosition(x, y);
        under.addImage(image);
    }

    public static Boolean pdfTemplateInsert(String templateUrl, String outputFileUrl, Map<String, Object> templateValueMap, Map<String, String> templateImageMap) {
        boolean success = true;

        OutputStream os = null;
        PdfStamper ps = null;
        PdfReader reader = null;
        try {
            os = Files.newOutputStream(new File(outputFileUrl).toPath());
            //讀取pdf表單
            reader = new PdfReader(templateUrl);
            //根據(jù)表單生成一個新的pdf文件
            ps = new PdfStamper(reader, os);
            //獲取pdf表單
            AcroFields form = ps.getAcroFields();
            //給表單中添加中文字體
            BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            form.addSubstitutionFont(bf);
            if (null != templateValueMap && !templateValueMap.isEmpty()) {
                for (String key : templateValueMap.keySet()) {
                    form.setField(key, String.valueOf(templateValueMap.get(key)));
                }
            }

            if (null != templateImageMap && !templateImageMap.isEmpty()) {
                for (String key : templateImageMap.keySet()) {
                    insertImage(form, ps, key, templateImageMap.get(key));
                }
            }
            ps.setFormFlattening(true);
        } catch (Exception e) {
            success = false;
        } finally {
            try {
                ps.close();
                reader.close();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return success;
    }

    public static void main(String[] args) {
        //模板路徑
        String inputUrl = "E:/Desktop/test/demo/itext-demo.pdf";
        //生成的文件路徑
        String outputUrl = "E:/Desktop/test/demo/itext-demo-output.pdf";
        Map<String, Object> data = new HashMap<>();
        data.put("name", "張山");
        data.put("year", "2000年10月");
        data.put("phone", "13032451234");
        data.put("gangwei", "Java開發(fā)");
        data.put("introduceOneself", "熟練使用Java常用框架:Spring 、mybatis等");
        //圖片地址
        String imageUrl = "E:/Desktop/test/demo/1.jpeg";
        Map<String, String> templateImageMap = new HashMap<>();
        templateImageMap.put("image", imageUrl);

        PDFUtil.pdfTemplateInsert(inputUrl, outputUrl, data, templateImageMap);
    }
}

執(zhí)行結果

總結

到此這篇關于Java如何使用itext向PDF插入數(shù)據(jù)和圖片的文章就介紹到這了,更多相關Java向PDF插入數(shù)據(jù)圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot加載配值文件的實現(xiàn)步驟

    springboot加載配值文件的實現(xiàn)步驟

    本文主要介紹了springboot加載配值文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • mybatis/mybatis-plus模糊查詢語句特殊字符轉義攔截器的實現(xiàn)

    mybatis/mybatis-plus模糊查詢語句特殊字符轉義攔截器的實現(xiàn)

    在開發(fā)中,我們通常會遇到這樣的情況。用戶在錄入信息是錄入了‘%’,而在查詢時無法精確匹配‘%’。究其原因,‘%’是MySQL的關鍵字,如果我們想要精確匹配‘%’,那么需要對其進行轉義,本文就詳細的介紹一下
    2021-11-11
  • Spring?Boot?2.x升3.x的那些事

    Spring?Boot?2.x升3.x的那些事

    最近項目需求,準備從Spring Boot 2.x升級到3.x,升級后發(fā)現(xiàn)編譯器報了一堆錯誤,本文主要介紹了Spring?Boot?2.x升3.x的那些事,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 詳解Java程序啟動時-D指定參數(shù)是什么

    詳解Java程序啟動時-D指定參數(shù)是什么

    java服務啟動的時候,都會指定一些參數(shù),下面這篇文章主要給大家介紹了關于Java程序啟動時-D指定參數(shù)是什么的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Java之String類型的編碼方式轉換

    Java之String類型的編碼方式轉換

    這篇文章主要介紹了Java之String類型的編碼方式轉換,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java中system.exit(0) 和 system.exit(1)區(qū)別

    Java中system.exit(0) 和 system.exit(1)區(qū)別

    本文主要介紹了Java中system.exit(0) 和 system.exit(1)區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • MyBatis批量插入(insert)數(shù)據(jù)操作

    MyBatis批量插入(insert)數(shù)據(jù)操作

    本文給大家分享MyBatis批量插入(insert)數(shù)據(jù)操作知識,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-06-06
  • ElasticSearch學習之ES Mapping實戰(zhàn)示例

    ElasticSearch學習之ES Mapping實戰(zhàn)示例

    這篇文章主要為大家介紹了ElasticSearch學習之ES Mapping實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • SpringCloud輪詢拉取注冊表與服務發(fā)現(xiàn)流程詳解

    SpringCloud輪詢拉取注冊表與服務發(fā)現(xiàn)流程詳解

    這篇文章主要介紹了SpringCloud輪詢拉取注冊表與服務發(fā)現(xiàn),現(xiàn)在很多創(chuàng)業(yè)公司都開始往springcloud靠了,可能是由于文檔和組件比較豐富的原因吧,畢竟是一款目前來說比較完善的微服務架構
    2022-11-11
  • MyBatisPlus唯一索引批量新增或修改的實現(xiàn)方法

    MyBatisPlus唯一索引批量新增或修改的實現(xiàn)方法

    本文主要介紹了MyBatisPlus唯一索引批量新增或修改的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03

最新評論

盐山县| 如皋市| 黄陵县| 东平县| 西盟| 苗栗县| 罗甸县| 通渭县| 闵行区| 海淀区| 奎屯市| 贵定县| 邹城市| 温宿县| 临城县| 山西省| 丹凤县| 张掖市| 阳泉市| 南召县| 台江县| 公主岭市| 青铜峡市| 策勒县| 句容市| 阳城县| 启东市| 永平县| 东安县| 松桃| 曲靖市| 通化县| 铁岭县| 柘城县| 泸水县| 固原市| 永清县| 贺兰县| 昆山市| 上饶市| 高淳县|