/**
* 生成转账PDF
* @param withdrawPdfMoreQO
* @return
*/
@PostMapping("/transfer/pdf")
public HttpServletResponse transferPdf(HttpServletResponse response, @RequestBody @Validated WithdrawPdfMoreQO withdrawPdfMoreQO) throws Exception {
if(withdrawPdfMoreQO.getQos().size() == 1 && withdrawPdfMoreQO.getMark() == 1){
WithdrawPdfQO qo = withdrawPdfMoreQO.getQos().get(0);
qo.setUppperAmount(UpperNumberUtil.convert(qo.getAmount()));
qo.setTransTime(DateUtils.transDateToStrigForPattern(DateUtils.tranTimestampForDate(qo.getTime()), "yyyy-MM-dd HH:mm:ss"));
response.setContentType("application/pdf");
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
//建立文档
Document document = new Document(PageSize.A4);
PdfWriter.getInstance(document, response.getOutputStream());
//1.设置页边距
document.setMargins(30, 30, 100, 100);
// 3.打开文档
document.open();
//设置字体
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.itextpdf.text.Font titlefont = new com.itextpdf.text.Font(bfChinese, 25, com.itextpdf.text.Font.BOLD);
com.itextpdf.text.Font sideTitlefont = new com.itextpdf.text.Font(bfChinese, 10, com.itextpdf.text.Font.NORMAL);
com.itextpdf.text.Font textfont = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);
//设置段落
Paragraph paragraph = new Paragraph();
paragraph.setAlignment(1); //设置文字居中 0靠左 1,居中 2,靠右
paragraph.add(new Chunk("香港创一控股有限公司", titlefont));
paragraph.add(new Chunk(" "));
paragraph.add(new Chunk("电子回单", sideTitlefont));
paragraph.setSpacingAfter(50f);// 设置段落下空白
document.add(paragraph);
Paragraph p1 = new Paragraph();
p1.setIndentationLeft(76);// 左缩进
p1.add(new Chunk("付款人户名:", textfont));
p1.add(new Chunk(" "));
p1.add(new Chunk("香港创一控股有限公司", textfont));
p1.setSpacingAfter(18f);// 设置段落下空白
document.add(p1);
Paragraph p2 = new Paragraph();
p2.setIndentationLeft(76);// 左缩进
p2.add(new Chunk("收款人户名:", textfont));
p2.add(new Chunk(" "));
p2.add(new Chunk(qo.getPayee(), textfont));
p2.setSpacingAfter(18f);// 设置段落下空白
document.add(p2);
Paragraph p3 = new Paragraph();
p3.setIndentationLeft(76);// 左缩进
p3.add(new Chunk("收款人账号:", textfont));
p3.add(new Chunk(" "));
p3.add(new Chunk(qo.getAccount(), textfont));
p3.setSpacingAfter(18f);// 设置段落下空白
document.add(p3);
Paragraph p4 = new Paragraph();
p4.setIndentationLeft(50);// 左缩进
p4.add(new Chunk("收款人开户银行:", textfont));
p4.add(new Chunk(" "));
p4.add(new Chunk(qo.getBank(), textfont));
p4.setSpacingAfter(18f);// 设置段落下空白
document.add(p4);
Paragraph p5 = new Paragraph();
p5.setIndentationLeft(63);// 左缩进
p5.add(new Chunk("金额(" + qo.getCurrency() +"):", textfont));
p5.add(new Chunk(" "));
p5.add(new Chunk(qo.getAmount(), textfont));
p5.setSpacingAfter(18f);// 设置段落下空白
document.add(p5);
Paragraph p6 = new Paragraph();
p6.setIndentationLeft(63);// 左缩进
p6.add(new Chunk("金额(大写):", textfont));
p6.add(new Chunk(" "));
p6.add(new Chunk(qo.getUppperAmount(), textfont));
p6.setSpacingAfter(18f);// 设置段落下空白
document.add(p6);
Paragraph p7 = new Paragraph();
p7.setIndentationLeft(110);// 左缩进
p7.add(new Chunk("汇率:", textfont));
p7.add(new Chunk(" "));
p7.add(new Chunk(qo.getExchangeRate(), textfont));
p7.setSpacingAfter(18f);// 设置段落下空白
document.add(p7);
Paragraph p8 = new Paragraph();
p8.setIndentationLeft(110);// 左缩进
p8.add(new Chunk("摘要:", textfont));
p8.add(new Chunk(" "));
p8.add(new Chunk("转账电子回单", textfont));
p8.setSpacingAfter(18f);// 设置段落下空白
document.add(p8);
Paragraph p9 = new Paragraph();
p9.setIndentationLeft(77);// 左缩进
p9.add(new Chunk("交易流水号:", textfont));
p9.add(new Chunk(" "));
p9.add(new Chunk(qo.getSerialNo(), textfont));
p9.setSpacingAfter(18f);// 设置段落下空白
document.add(p9);
Paragraph p10 = new Paragraph();
p10.setIndentationLeft(100);// 左缩进
p10.add(new Chunk("时间戳:", textfont));
p10.add(new Chunk(" "));
p10.add(new Chunk(qo.getTransTime(), textfont));
p10.setSpacingAfter(50f);// 设置段落下空白
document.add(p10);
Paragraph p11 = new Paragraph();
p11.setIndentationLeft(150);// 左缩进
p11.add(new Chunk("附言", textfont));
p11.add(new Chunk(" "));
p11.add(new Chunk("", textfont));
p11.setSpacingAfter(20f);// 设置段落下空白
document.add(p11);
//图片
Image image1 = Image.getInstance("https://images.coralglobal.cn/picture/newuser/cy-seal.png");
//设置图片位置的x轴和y周
image1.setAbsolutePosition(400f, 170f);
//设置图片的宽度和高度
image1.scaleAbsolute(100, 130);
//将图片1添加到pdf文件中
document.add(image1);
document.close();
return response;
}else{
response.setContentType("application/zip");
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
ZipOutputStream zipOutput = new ZipOutputStream(response.getOutputStream(), Charset.forName("GBK"));
for(WithdrawPdfQO qo : withdrawPdfMoreQO.getQos()){
Long serialNo = System.currentTimeMillis();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
String pdfName = serialNo + "-" + qo.getPayee() + "-" + qo.getCurrency() + qo.getAmount() + ".pdf";
qo.setUppperAmount(UpperNumberUtil.convert(qo.getAmount()));
qo.setTransTime(DateUtils.transDateToStrigForPattern(DateUtils.tranTimestampForDate(qo.getTime()), "yyyy-MM-dd HH:mm:ss"));
//建立文档
Document document = new Document(PageSize.A4);
PdfWriter.getInstance(document, outputStream);
//1.设置页边距
document.setMargins(30, 30, 100, 100);
// 3.打开文档
document.open();
//设置字体
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.itextpdf.text.Font titlefont = new com.itextpdf.text.Font(bfChinese, 25, com.itextpdf.text.Font.BOLD);
com.itextpdf.text.Font sideTitlefont = new com.itextpdf.text.Font(bfChinese, 10, com.itextpdf.text.Font.NORMAL);
com.itextpdf.text.Font textfont = new com.itextpdf.text.Font(bfChinese, 12, com.itextpdf.text.Font.NORMAL);
//设置段落
Paragraph paragraph = new Paragraph();
paragraph.setAlignment(1); //设置文字居中 0靠左 1,居中 2,靠右
paragraph.add(new Chunk("香港创一控股有限公司", titlefont));
paragraph.add(new Chunk(" "));
paragraph.add(new Chunk("电子回单", sideTitlefont));
paragraph.setSpacingAfter(50f);// 设置段落下空白
document.add(paragraph);
Paragraph p1 = new Paragraph();
p1.setIndentationLeft(76);// 左缩进
p1.add(new Chunk("付款人户名:", textfont));
p1.add(new Chunk(" "));
p1.add(new Chunk("香港创一控股有限公司", textfont));
p1.setSpacingAfter(18f);// 设置段落下空白
document.add(p1);
Paragraph p2 = new Paragraph();
p2.setIndentationLeft(76);// 左缩进
p2.add(new Chunk("收款人户名:", textfont));
p2.add(new Chunk(" "));
p2.add(new Chunk(qo.getPayee(), textfont));
p2.setSpacingAfter(18f);// 设置段落下空白
document.add(p2);
Paragraph p3 = new Paragraph();
p3.setIndentationLeft(76);// 左缩进
p3.add(new Chunk("收款人账号:", textfont));
p3.add(new Chunk(" "));
p3.add(new Chunk(qo.getAccount(), textfont));
p3.setSpacingAfter(18f);// 设置段落下空白
document.add(p3);
Paragraph p4 = new Paragraph();
p4.setIndentationLeft(50);// 左缩进
p4.add(new Chunk("收款人开户银行:", textfont));
p4.add(new Chunk(" "));
p4.add(new Chunk(qo.getBank(), textfont));
p4.setSpacingAfter(18f);// 设置段落下空白
document.add(p4);
Paragraph p5 = new Paragraph();
p5.setIndentationLeft(63);// 左缩进
p5.add(new Chunk("金额(" + qo.getCurrency() +"):", textfont));
p5.add(new Chunk(" "));
p5.add(new Chunk(qo.getAmount(), textfont));
p5.setSpacingAfter(18f);// 设置段落下空白
document.add(p5);
Paragraph p6 = new Paragraph();
p6.setIndentationLeft(63);// 左缩进
p6.add(new Chunk("金额(大写):", textfont));
p6.add(new Chunk(" "));
p6.add(new Chunk(qo.getUppperAmount(), textfont));
p6.setSpacingAfter(18f);// 设置段落下空白
document.add(p6);
Paragraph p7 = new Paragraph();
p7.setIndentationLeft(110);// 左缩进
p7.add(new Chunk("汇率:", textfont));
p7.add(new Chunk(" "));
p7.add(new Chunk(qo.getExchangeRate(), textfont));
p7.setSpacingAfter(18f);// 设置段落下空白
document.add(p7);
Paragraph p8 = new Paragraph();
p8.setIndentationLeft(110);// 左缩进
p8.add(new Chunk("摘要:", textfont));
p8.add(new Chunk(" "));
p8.add(new Chunk("转账电子回单", textfont));
p8.setSpacingAfter(18f);// 设置段落下空白
document.add(p8);
Paragraph p9 = new Paragraph();
p9.setIndentationLeft(77);// 左缩进
p9.add(new Chunk("交易流水号:", textfont));
p9.add(new Chunk(" "));
p9.add(new Chunk(qo.getSerialNo(), textfont));
p9.setSpacingAfter(18f);// 设置段落下空白
document.add(p9);
Paragraph p10 = new Paragraph();
p10.setIndentationLeft(100);// 左缩进
p10.add(new Chunk("时间戳:", textfont));
p10.add(new Chunk(" "));
p10.add(new Chunk(qo.getTransTime(), textfont));
p10.setSpacingAfter(50f);// 设置段落下空白
document.add(p10);
Paragraph p11 = new Paragraph();
p11.setIndentationLeft(150);// 左缩进
p11.add(new Chunk("附言", textfont));
p11.add(new Chunk(" "));
p11.add(new Chunk("", textfont));
p11.setSpacingAfter(20f);// 设置段落下空白
document.add(p11);
//图片
Image image1 = Image.getInstance("https://images.coralglobal.cn/picture/newuser/cy-seal.png");
//设置图片位置的x轴和y周
image1.setAbsolutePosition(400f, 170f);
//设置图片的宽度和高度
image1.scaleAbsolute(100, 130);
//将图片1添加到pdf文件中
document.add(image1);
document.close();
zipOutput.putNextEntry(new ZipEntry(pdfName));
zipOutput.write(outputStream.toByteArray());
}
zipOutput.close();
return response;
}
}
用的是itextpdf工具包