package cn.com.ly.action.statistic;
import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.rpc.Call;
//这是新版的API
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import cn.com.ly.pojo.Goodsinfo;
import cn.com.ly.pojo.Orders;
import cn.com.ly.pojo.Sellerinfo;
import cn.com.ly.pojo.Supplierinfo;
//下面是老版的API
//import com.lowagie.text.Cell;
//import com.lowagie.text.Document;
//import com.lowagie.text.DocumentException;
//import com.lowagie.text.Font;
//import com.lowagie.text.PageSize;
//import com.lowagie.text.Paragraph;
//import com.lowagie.text.pdf.BaseFont;
//import com.lowagie.text.pdf.PdfCell;
//import com.lowagie.text.pdf.PdfPCell;
//import com.lowagie.text.pdf.PdfPTable;
//import com.lowagie.text.pdf.PdfTable;
//import com.lowagie.text.pdf.PdfWriter;
public class PdfExportHelper {
//设置中文字体
private static BaseFont bfChinese = null;
//设置各种文本格式
private static Font f2 = null;
private static Font f6 = null;
private static Font f8 = null;
private static Font f10 = null;
private static Font f12 = null;
private static String[] title = null;
static{
try {
//这样可以打印出中文。
bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
f2 = new Font(bfChinese,2,Font.NORMAL);
f6 = new Font(bfChinese, 6, Font.NORMAL);
f8 = new Font(bfChinese, 8, Font.NORMAL);
f10 = new Font(bfChinese, 10, Font.NORMAL);
f12 = new Font(bfChinese, 12, Font.BOLD);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
title = new String[]{
"订单号","商品名","订单来源","座席工号","经销商名称","订单创建日期","商品价格","成本价","数量","总价"
//"1","","2","3","4","5","6","7","8","9"
};
}
public static void exportPdf(List<Orders> list,OutputStream outputStream){
//首先定义个document
Document document = new Document(PageSize.A4.rotate());
try {
//然后得到pdfWriter一般用不到,高级的用的到
PdfWriter.getInstance(document, outputStream);
document.open();
System.out.println(new String("sfs就是开发商"));
//把所有的信息都增加到document就好了
document.add(new Paragraph("就是开发商是开放式好好lsjdfjsjf sfk", f12));
document.add(PdfExportHelper.createPdfPTable(PdfExportHelper.title,
list));
} catch (DocumentException e) {
e.printStackTrace();
}
document.close();
}
//创建PdfPTable(创建表格)
private static PdfPTable createPdfPTable(String[] title,List<Orders> list){
PdfPTable pdfpTable = new PdfPTable(title.length);
pdfpTable.setWidthPercentage(100);
pdfpTable.setHorizontalAlignment(pdfpTable.ALIGN_LEFT);
//设置table的title
PdfExportHelper.setTitle(title,pdfpTable);
//设置table的正文
PdfExportHelper.setContext(list,pdfpTable);
return pdfpTable;
}
//设置table的title
private static PdfPTable setTitle(String[] title,PdfPTable pdfpTable ){
PdfPCell cell = new PdfPCell();
// cell.setBackgroundColor(new Color(213, 141, 69));
cell.setBackgroundColor(new BaseColor(213,141,69));
cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
for(int i = 0; i < title.length; i++){
cell.setPhrase(new Paragraph(title[i],PdfExportHelper.f8));
pdfpTable.addCell(cell);
}
return pdfpTable;
}
//设置table的正文
private static PdfPTable setContext(List<Orders> list,PdfPTable pdfpTable){
PdfPCell cell = new PdfPCell();
cell.setHorizontalAlignment(PdfPCell.ALIGN_CENTER);
if((list != null)&& list.size()!=0){
for(int i = 0; i<list.size();i++){
Orders order = list.get(i);
cell.setPhrase(new Paragraph(order.getOrderCode(),f8));
pdfpTable.addCell(cell);
System.out.println(order.getOrderCode());
cell.setPhrase(new Paragraph(order.getGoodsinfo().getGoodsTitle(),f8));
pdfpTable.addCell(cell);
cell.setPhrase(new Paragraph(order.getSellerinfo().getSellerName(),f8));
pdfpTable.addCell(cell);
cell.setPhrase(new Paragraph(order.getOrderSellerCode(),f8));
pdfpTable.addCell(cell);
cell.setPhrase(new Paragraph(order.getSupplier().getSupplyName(),f8));
pdfpTable.addCell(cell);
//日期格式要转变下
cell.setPhrase(new Paragraph(new SimpleDateFormat("yyyy-MM-dd").format(order.getOrderCreateTime()),f8));
pdfpTable.addCell(cell);
cell.setPhrase(new Paragraph(order.getGoodsPrice()!=null?order.getGoodsPrice().toString():"",f8));
pdfpTable.addCell(cell);
cell.setPhrase(new Paragraph(order.getGoodsCost()!=null?order.getGoodsCost().toString():"",f8));
pdfpTable.addCell(cell);
cell.setPhrase(new Paragraph(order.getGoodsSum()!=null?order.getGoodsSum().toString():"",f8));
pdfpTable.addCell(cell);
cell.setPhrase(new Paragraph(order.getOrderTotal() !=null?order.getOrderTotal().toString():"",f8));
pdfpTable.addCell(cell);
}
}
return pdfpTable;
}
//自己写的测试main方法
public static void main(String[] args) throws FileNotFoundException {
List<Orders> list = new ArrayList<Orders>();
Orders order = new Orders(); Goodsinfo goodsinfo = new Goodsinfo();
goodsinfo.setGoodsTitle("002");
order.setOrderCode("001");order.setGoodsinfo(goodsinfo);
Sellerinfo sellerinfo = new Sellerinfo();
sellerinfo.setSellerName("003");
order.setSellerinfo(sellerinfo);
Supplierinfo supplier =new Supplierinfo();
supplier.setSupplyName("好好发fafsfs");
order.setOrderSellerCode("004");order.setSupplier(supplier);
order.setOrderCreateTime(new Date());
order.setGoodsPrice(444d);
order.setGoodsCost(555d);
order.setGoodsSum(666l);
order.setOrderTotal(777d);
list.add(order);
FileOutputStream file = new FileOutputStream("c:/hao.pdf");
PdfExportHelper.exportPdf(list, file);
}
}