iText使用PDF模板生成輸出PDF

下載Adobe Acrobat 工具制作PDF模板慨蓝,對模板中的變量使用表單進行設置赫段,如下圖:


準備表單
變量設置

代碼實現(xiàn):

/*
 * Copyright (c) 2005, 2019, EVECOM Technology Co.,Ltd. All rights reserved.
 * EVECOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 */

import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.*;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * description
 * created       2019/3/5 18:05
 *
 * @author Arno Chen
 * @version --添加版本信息
 * @see --添加類中引用的相關(guān)類和接口
 * @since Version 1.0
 */
public class exportPdfTest {
    public static void main(String[] args) throws Exception {
        test();
        System.out.println("success");
    }

    public static void test() throws IOException, DocumentException {
        String fileName = "D:/index.pdf"; // pdf模板
        PdfReader reader = new PdfReader(fileName);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        /* 將要生成的目標PDF文件名稱 */
        PdfStamper ps = new PdfStamper(reader, bos);
        PdfContentByte under = ps.getUnderContent(1);

          /* 使用中文字體 */
        BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        ArrayList<BaseFont> fontList = new ArrayList<BaseFont>();
        fontList.add(bf);

        /* 取出報表模板中的所有字段 */
        AcroFields fields = ps.getAcroFields();
        fields.setSubstitutionFonts(fontList);
        fillData(fields, data());

        /* 必須要調(diào)用這個喘蟆,否則文檔不會生成的 */
        ps.setFormFlattening(true);
        ps.close();


        OutputStream fos = new FileOutputStream("D:/zsResult.pdf");
        fos.write(bos.toByteArray());
        fos.flush();
        fos.close();
        bos.close();
    }

    public static void fillData(AcroFields fields, Map<String, String> data)
            throws IOException, DocumentException {
        for (String key : data.keySet()) {
            String value = data.get(key);
            fields.setField(key, value); // 為字段賦值,注意字段名稱是區(qū)分大小寫的
        }
    }

    public static Map<String, String> data() {
        Map<String, String> data = new HashMap<String, String>();
        data.put("name", "小豬佩奇");
        data.put("date", "2019年3月7號");
        return data;
    }
}




生成文件

執(zhí)行代碼出現(xiàn)輸出中文

Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized.問題

網(wǎng)上找了解決方案都是需要改itext-asian的包名逆济,改來改去都不行帅矗,看到別人上傳了修改后的jar包,去CSDN下載需要積分(惡心)腿倚,幾經(jīng)周折找到了可用的包,直接分享出來蚯妇。

jar包下載地址:

鏈接:https://pan.baidu.com/s/1ADsiMe42aLVrgNBJjPdDkg 提取碼:zwww
復制這段內(nèi)容后打開百度網(wǎng)盤手機App敷燎,操作更方便哦

或者gradle依賴一下對應版本

compile group: 'com.itextpdf', name: 'itextpdf', version: '5.4.3'
compile group: 'com.itextpdf', name: 'itext-asian', version: '5.2.0'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市箩言,隨后出現(xiàn)的幾起案子硬贯,更是在濱河造成了極大的恐慌,老刑警劉巖陨收,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饭豹,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機拄衰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門它褪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翘悉,你說我怎么就攤上這事列赎。” “怎么了镐确?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵包吝,是天一觀的道長。 經(jīng)常有香客問我源葫,道長诗越,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任息堂,我火速辦了婚禮嚷狞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荣堰。我一直安慰自己床未,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布振坚。 她就那樣靜靜地躺著薇搁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪渡八。 梳的紋絲不亂的頭發(fā)上啃洋,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音屎鳍,去河邊找鬼宏娄。 笑死,一個胖子當著我的面吹牛逮壁,可吹牛的內(nèi)容都是我干的孵坚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼窥淆,長吁一口氣:“原來是場噩夢啊……” “哼卖宠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起祖乳,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤逗堵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眷昆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蜒秤,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡汁咏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了作媚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攘滩。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纸泡,靈堂內(nèi)的尸體忽然破棺而出漂问,到底是詐尸還是另有隱情,我是刑警寧澤女揭,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布蚤假,位于F島的核電站,受9級特大地震影響吧兔,放射性物質(zhì)發(fā)生泄漏磷仰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一境蔼、第九天 我趴在偏房一處隱蔽的房頂上張望灶平。 院中可真熱鬧,春花似錦箍土、人聲如沸逢享。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞒爬。三九已至,卻和暖如春调缨,著一層夾襖步出監(jiān)牢的瞬間疮鲫,已是汗流浹背吆你。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工弦叶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妇多。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓伤哺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親者祖。 傳聞我的和親對象是個殘疾皇子立莉,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,694評論 0 3
  • 博客原文鏈接 Android百大框架排行榜(轉(zhuǎn)) 說明: 無聊寫一篇筆記式文章. 精力有限,很多錯誤之處七问,受時間與...
    碼農(nóng)朱同學閱讀 2,634評論 0 27
  • 請允許我借鑒前輩們的東西~~~~ 感激不盡~~~~~ 以下為Android 框架排行榜 么么噠~ Android...
    嗯_新閱讀 2,019評論 3 32
  • 目前在個人品牌搭建上取得了有什么成績呢蜓耻?如添加了多少個精準用戶,是否有促成交易等械巡。 個人品牌建造定期輸出刹淌,與客戶互...
    鬼馬人生策劃師丸子閱讀 178評論 0 2
  • 2/100 據(jù)傳饶氏,科學研究表明,斯瑪特星人的房間和桌子都特別亂有勾。因為我的桌子和房間特別亂疹启,所以我是個斯瑪特星人。這...
    蜂窩煤閱讀 243評論 0 0