下載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'