itext-asian 生成pdf 之spring boot

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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章