itext-asian 生成pdf 之spring boot

来源:互联网 发布:淘宝商家怎么发快递的 编辑:程序博客网 时间:2024/06/06 02:43
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*/@Servicepublic 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 downloadString[] tableHead = {"名称","品牌","型号","数量"};  //更多参数GeneratePdfFileService.generatePdf(tableHead, list, TimeUtil.dateToString(), request, response);

0 0
原创粉丝点击