jar包放入libs目錄:
libs/itext-asian-5.2.0.jar
配置build.gradle文件:
compile fileTree(dir: 'libs', include: 'itext-asian-5.2.0.jar')
Service:
import com.itextpdf.text.*;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
/*
* add by hxl
*/
@Service
public class GeneratePdfFileService {
public static void generatePdf(String[] tableHerd,List<OrderItems> list, String generateTime, HttpServletRequest request,HttpServletResponse response){
try{
response.setContentType("application/pdf");
response.setContentType("application/pdf;charset=utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + generateTime +".pdf");
Rectangle rect = new Rectangle(PageSize.A4);
Document document = new Document(rect);
//page size
document.setMargins(10, 15, 10, 15);
PdfWriter.getInstance(document, response.getOutputStream());
//author
document.addTitle("yaoyingli.com");
document.addAuthor("yaoyingli.com");
// 創建字體,設置family,size,style,還可以設置color
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontChinese = new Font(bfChinese, 8, Font.NORMAL);
Font titleChinese = new Font(bfChinese, 20, Font.BOLD);
Font BoldChinese = new Font(bfChinese, 14, Font.BOLD);
Font subBoldFontChinese = new Font(bfChinese, 8, Font.BOLD);
//
document.open();
Paragraph title = new Paragraph("進貨單",BoldChinese);
title.setAlignment(Element.ALIGN_CENTER);
title.setLeading(10f);
title.setSpacingBefore(30f);
title.setSpacingAfter(5f);
document.add(title);
//clum num ,clum whdth
float[] whdths = {10f,12f,20f,15f,15f,15f,20f,10f,15f};
PdfPTable table = new PdfPTable(whdths);
table.setWidthPercentage(100);
//th
PdfPCell cell = null;
for (int colNum = 0; colNum < tableHerd.length; colNum++) {
cell = new PdfPCell(new Paragraph(tableHerd[colNum],subBoldFontChinese));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
}
//table.getDefaultCell().setPadding(3);
//tr data
PdfPCell dataCell = new PdfPCell();
dataCell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
if(list.size()>0 && list !=null){
for (int j=0; j<list.size();j++){
dataCell.setPhrase(new Paragraph(list.get(j).getItem().getChannel().getName().toString(),fontChinese));
table.addCell(dataCell);
dataCell.setPhrase(new Paragraph(list.get(j).getItem().getBrand().getName().toString(),fontChinese));
table.addCell(dataCell);
dataCell.setPhrase(new Paragraph(list.get(j).getItem().getName().toString(),fontChinese));
table.addCell(dataCell);
dataCell.setPhrase(new Paragraph(list.get(j).getSku().getSkuValByType(6).toString(),fontChinese));
table.addCell(dataCell);
dataCell.setPhrase(new Paragraph(list.get(j).getSku().getSkuValByType(2).toString(),fontChinese));
table.addCell(dataCell);
dataCell.setPhrase(new Paragraph(list.get(j).getSku().getSkuValByType(1).toString(),fontChinese));
table.addCell(dataCell);
int p = list.get(j).getSku().getPrice();
dataCell.setPhrase(new Paragraph(new java.text.DecimalFormat("#.00").format(p/100).toString(),fontChinese));
table.addCell(dataCell);
dataCell.setPhrase(new Paragraph(""+list.get(j).getNumber(),fontChinese));
table.addCell(dataCell);
long tp = list.get(j).getTotalPrice();
dataCell.setPhrase(new Paragraph(new java.text.DecimalFormat("#.00").format(tp/100).toString(),fontChinese));
table.addCell(dataCell);
}
}
//footer
float[] footwhdths = {30f};
PdfPTable foottable = new PdfPTable(footwhdths);
PdfPCell footcell = new PdfPCell(new Paragraph(" yaoyingli.com | " + generateTime,subBoldFontChinese));
footcell.setHorizontalAlignment(Element.ALIGN_LEFT);
footcell.setBorder(0);
footcell.setPaddingLeft(-50f);
foottable.addCell(footcell);
//end
document.add(table);
document.add(foottable);
document.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
Controller:
//一些邏輯代碼...
//pdf download
String[] tableHead = {"名稱","品牌","型號","數量"}; //更多參數
GeneratePdfFileService.generatePdf(tableHead, list, TimeUtil.dateToString(), request, response);
itext-asian 生成pdf 之spring boot
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.