java根据pdf模版动态生成pdf

更新时间:2023-08-01 22:18:11 阅读: 评论:0

java根据pdf模版动态⽣成pdf
java根据pdf模版动态⽣成pdf
package com.utils;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import s.io.FileUtils;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import Document;
import DocumentException;
import Element;
import Font;
import PageSize;
import Phra;
import pdf.AcroFields;
import pdf.AcroFields.Item;
import pdf.BaFont;
import pdf.PdfContentByte;
import pdf.PdfPCell;
import pdf.PdfPTable;
import pdf.PdfReader;
import pdf.PdfStamper;
import pdf.PdfWriter;
/**
* 根据pdf模版动态⽣成pdf⼯具类
*/
public class PDFReplaceUtils {
public static final String htmlPreffix = "<!DOCTYPE html [<!ENTITY nbsp \" \"> ]><html><head><meta chart=\"UTF-8\"></meta><title></title></head><body>"; public static final String htmlSuffix = "</body></html>" ;
/**
* 动态⽣成pdf
*
* @
* @date 2017年11⽉5⽇上午11:40:44
* @param fileName
*            模版路径
* @param outFileName
*            ⽣成pdf路径
* @param map
*            动态赋值pdf⽂本域名称和值
* @throws IOException
* @throws DocumentException
*/
public static void pdf(String fileName, String outFileName, Map<String, String> map)
throws IOException, DocumentException {
PdfReader reader = new PdfReader(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper ps = new PdfStamper(reader, bos);
BaFont bf = ateFont("STSong-Light", "UniGB-UCS2-H", BaFont.NOT_EMBEDDED);
ArrayList<BaFont> fontList = new ArrayList<BaFont>();
fontList.add(bf);
AcroFields s = ps.getAcroFields();
s.tSubstitutionFonts(fontList);
Map<String, Item> fieldMap = s.getFields(); // pdf表单相关信息展⽰
for (Entry<String, Item> entry : Set()) {
String name = Key(); // name就是pdf模版中各个⽂本域的名字
Item item = Value();
}
// 给pdf⽂本域赋值
for (Entry<String, String> maps : Set()) {
s.Key(), Value());
}
ps.tFormFlattening(true); // 不能少
ps.clo();
OutputStream fos = new FileOutputStream(outFileName);
fos.ByteArray());
fos.flush();
fos.clo();
bos.clo();
reader.clo();
}
/**
* 创建pdf表格
*
* @
* @date 2017年11⽉5⽇下午8:48:07
* @param fileName
*            表格名称
* @param columnNum
*            列数
* @param lists
*            单元格内容
* @throws DocumentException
* @throws IOException
*/
public static void createPdfTable(String fileName, int columnNum, List<Map<String, String>> lists)
throws DocumentException, IOException {
Document document = new Document(PageSize.A4);
document.open();
PdfPTable table = new PdfPTable(columnNum);
table.tTotalWidth(50);
table.tHeaderRows(0);
table.tSpacingBefore(10f);
BaFont bf = ateFont("STSong-Light", "UniGB-UCS2-H", BaFont.NOT_EMBEDDED);
Font chine = new Font(bf, 12, Font.NORMAL);
Phra phra;
PdfPCell cell;
for (Map<String, String> map : lists) {
for (Entry<String, String> maps : Set()) {
phra = new Value(), chine);
cell = new PdfPCell(phra);
cell.tHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
}
}
document.add(table);
document.clo();
}
/**
* 多个pdf合并,根据参数选择是否删除参与合并的pdf、将合并后的pdf名称改为第⼏个参与合并的名称注:需参与合并的pdf⽂件请按需求正序排序    *
* @
* @date 2017年11⽉7⽇下午8:46:43
* @param fileList
*            要合并的pdf集合
* @param newFile
*            新⽂件
火锅鱼
* @param isDelete
*            是否删除参与合并的pdf⽂件
* @param numFileName
*            将新pdf⽂件名改为第⼏个参与合并pdf名
* @throws DocumentException
* @throws IOException
*/
public static void mergePdfFiles(List<String> fileList, String newFile, Boolean isDelete, Integer numFileName)
throws DocumentException, IOException {
巧克力王国PdfReader[] readers = new PdfReader[fileList.size()];
readers[0] = new (0));
PdfStamper stamp = new PdfStamper(readers[0], new FileOutputStream(newFile));
PdfContentByte under;
int pageNum = 1;
for (int i = 1; i < fileList.size(); i++) {
readers[i] = new (i), null);
pageNum += readers[i].getNumberOfPages();
stamp.inrtPage(pageNum, PageSize.A4);
under = UnderContent(pageNum);
森林防火宣传语under.ImportedPage(readers[i], 1), 1, 0, 0, 1, 0, 0);
}
stamp.clo();
for (PdfReader pdfReader : readers) {
pdfReader.clo();
}
if (isDelete != null && isDelete == true) {
// 循环删除⽂件
for (String file : fileList) {
new File(file).delete();
}
}
if (numFileName != null && numFileName > 0) {
// 将新⽂件名改为第N个⽂件的路径
File modifyFileName = new File(newFile);
}
}
/**
* 富⽂本⽣成pdf⽂件
*
* @param context
手足的成语*            html格式⽂本数据
* @param outputFile
*            输出pdf⽂件的路径
* @return
* @throws Exception
*/
public static boolean convertHtmlToPdf(String context, String outputFile,String fontPath) throws Exception {        OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.tDocumentFromString(context);
桑巴基本步
// 解决中⽂⽀持问题
ITextFontResolver fontResolver = FontResolver();
fontResolver.addFont(fontPath, BaFont.IDENTITY_H, BaFont.NOT_EMBEDDED);
// 解决图⽚的相对路径问题
//        SharedContext().tBaURL("file:/D:/");
renderer.layout();
os.flush();
os.clo();
return true;
}
public static void main(String[] args) throws IOException, DocumentException {
// List<String> list = new LinkedList<String>();
// list.add("D:/1.pdf");
// list.add("D:/2.pdf");
// list.add("D:/3.pdf");
// String newFile = "D:/4.pdf";
// try {
// PdfFiles(list, newFile, true, 2);
// } catch (DocumentException e) {
//// TODO Auto-generated catch block
// e.printStackTrace();
/
/ } catch (IOException e) {
//// TODO Auto-generated catch block
教育安全平台// e.printStackTrace();
// }
byte[] bytes;
try {
//            bytes = adFileToByteArray(new File("D:/pdftest.html"));
//            convertHtmlToPdf(new String(bytes),"D:/lc.pdf","D:/");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String, String> map = new HashMap<String, String>();
那段温暖的时光map.put("ProtocolNo", "jj");
map.put("Borrower", "qq");
map.put("Mobile", "12345678912");
pdf("D:/jcsBorrow.pdf", "D:/test.pdf", map);
//        try {
//        List<Map<String, String>> list = null;
//        Map<String, String> map = new HashMap<String, String>();
//        list = new LinkedList<Map<String, String>>();
//        map.put("出借⼈(会员号)", "出借⼈(会员号)");
/
/        map.put("出借⼈⾝份证号", "出借⼈⾝份证号");
//        map.put("出借⾦额", "出借⾦额");
//        map.put("借款开始⽇", "借款开始⽇");
//        map.put("⽉截⽌还款⽇", "⽉截⽌还款⽇"); //        map.put("年利率", "年利率");
//        map.put("还款⽅式", "还款⽅式");
//        list.add(map);
//        createPdfTable("D:/test.pdf", 7, list);
//        } catch (DocumentException e) {
//// TODO Auto-generated catch block
//        e.printStackTrace();
//        } catch (IOException e) {
/
地区代理/// TODO Auto-generated catch block
//        e.printStackTrace();
//        }
}
}

本文发布于:2023-08-01 22:18:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1104837.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:合并   参与   模版   出借
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图