首先需要下载itext jar
然后使用Document打印PDF
public static void printPDFTable(PdfPTable table)
{
//①建立com.lowagie.text.Document对象的实例。
Document document = new Document(PageSize.A4);
try {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMDD@ss”);
String dateNowStr = sdf.format(d);
//②建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。
String url = “G:\” + dateNowStr +”.PDF”;
File file = new File(url);
PdfWriter.getInstance(document, new FileOutputStream(file));
//③打开文档。
document.open();
//④向文档中添加内容。
document.add(table);
}catch (Exception e){
e.printStackTrace();
}finally {
//⑤关闭文档。
document.close();
}
}
创建PDFTable对象编辑PDF的内容
/**
* 该方法将快递单信息制成一张表格
* @param trackTicketModel
* @return
*/
public static PdfPTable createTrackTable(TrackTicketModel trackTicketModel){
PdfPTable table = null;
try {
//中文问题
BaseFont bfChinese = BaseFont.createFont( "c://windows//fonts//simsun.ttc,1" , BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font= new Font(bfChinese, 12, Font.NORMAL);
//创建一个四列的表格
table = new PdfPTable(4);
//设置表格的默认样式
//设置行内间距
table.getDefaultCell().setPaddingTop(5);
table.getDefaultCell().setPaddingBottom(5);
table.getDefaultCell().setPaddingLeft(10);
table.getDefaultCell().setPaddingRight(10);
//行内内容水平居中
table.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER);
//行内内容不换行
table.getDefaultCell().setNoWrap(true);
//表格border
table.getDefaultCell().setBorder(1);
table.getDefaultCell().setBorderColor(BaseColor.BLACK);
//创建列对象
PdfPCell cell = null;
//日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//第一行
table.addCell(new PdfPCell(new Paragraph("快递单编号:",font)));
table.addCell(String.valueOf(trackTicketModel.getTrack_id()));
table.addCell(new PdfPCell(new Paragraph("快递单日期:",font)));
table.addCell(sdf.format(trackTicketModel.getTrack_date()));
//第二行
table.addCell(new PdfPCell(new Paragraph("寄件人姓名:",font)));
table.addCell(new PdfPCell(new Paragraph(trackTicketModel.getClient_name(),font)));
table.addCell(new PdfPCell(new Paragraph("寄件人电话:",font)));
table.addCell(trackTicketModel.getClient_phone());
//第三行
table.addCell(new PdfPCell(new Paragraph("寄件人邮箱:",font)));
//创建表格的行属性
cell = new PdfPCell(new Paragraph(trackTicketModel.getClient_email(),font));
//合并单元格
cell.setColspan(3);
table.addCell(cell);
//第四行
table.addCell(new PdfPCell(new Paragraph("寄件人地址:",font)));
//获取寄件人地址
String clientAddress = trackTicketModel.getClientAddressCountry()+" "+trackTicketModel.getClientAddressProvince()+" "+trackTicketModel.getClientAddressCity()+" "+
trackTicketModel.getClientAddressCounty()+" "+trackTicketModel.getClientAddressTown()+" "+trackTicketModel.getClientAddressVillage();
cell = new PdfPCell(new Paragraph(clientAddress,font));
//合并单元格
cell.setColspan(3);
table.addCell(cell);
//第五行
table.addCell(new PdfPCell(new Paragraph("收件人姓名:",font)));
table.addCell(new PdfPCell(new Paragraph(trackTicketModel.getRecipients_name(),font)));
table.addCell(new PdfPCell(new Paragraph("收件人电话:",font)));
table.addCell(trackTicketModel.getRecipients_phone());
//第六行
table.addCell(new PdfPCell(new Paragraph("收件人邮箱:",font)));
//创建表格的行属性
cell = new PdfPCell(new Paragraph(trackTicketModel.getRecipients_email(),font));
//合并单元格
cell.setColspan(3);
table.addCell(cell);
//第七行
table.addCell(new PdfPCell(new Paragraph("收件人地址:",font)));
//获取收件人地址
String recipientsAddress = trackTicketModel.getRecipientsAddressCountry()+" "+trackTicketModel.getRecipientsAddressProvince()+" "+trackTicketModel.getRecipientsAddressCity()+" "+
trackTicketModel.getClientAddressCounty()+" "+trackTicketModel.getRecipientsAddressTown()+" "+trackTicketModel.getRecipientsAddressVillage();
cell = new PdfPCell(new Paragraph(recipientsAddress,font));
//合并单元格
cell.setColspan(3);
table.addCell(cell);
//第八行
table.addCell(new PdfPCell(new Paragraph("站点名称:",font)));
table.addCell(new PdfPCell(new Paragraph(trackTicketModel.getStation_name(),font)));
table.addCell(new PdfPCell(new Paragraph("站点电话:",font)));
table.addCell(trackTicketModel.getStation_phone());
//第九行
table.addCell(new PdfPCell(new Paragraph("站点邮箱:",font)));
//创建表格的行属性
cell = new PdfPCell(new Paragraph(trackTicketModel.getStation_email(),font));
//合并单元格
cell.setColspan(3);
table.addCell(cell);
//第十行
table.addCell(new PdfPCell(new Paragraph("站点地址:",font)));
//获取站点地址
String stationAddress = trackTicketModel.getStationAddressCountry()+" "+trackTicketModel.getStationAddressProvince()+" "+trackTicketModel.getStationAddressCity()+" "+
trackTicketModel.getStationAddressCounty()+" "+trackTicketModel.getStationAddressTown()+" "+trackTicketModel.getStationAddressVillage();
cell = new PdfPCell(new Paragraph(stationAddress,font));
//合并单元格
cell.setColspan(3);
table.addCell(cell);
//第十一行
table.addCell(new PdfPCell(new Paragraph("包裹名称:",font)));
table.addCell(new PdfPCell(new Paragraph(trackTicketModel.getPackage_content(),font)));
table.addCell(new PdfPCell(new Paragraph("包裹重量:",font)));
table.addCell(String.valueOf(trackTicketModel.getPackage_weight())+" Kg");
//第十二行
table.addCell(new PdfPCell(new Paragraph("包裹是否保价:",font)));
table.addCell(new PdfPCell(new Paragraph(trackTicketModel.getPackage_supportValue(),font)));
table.addCell(new PdfPCell(new Paragraph("包裹价值评估:",font)));
table.addCell(new PdfPCell(new Paragraph(trackTicketModel.getPackage_valueDeclare(),font)));
//第十三行
table.addCell(new PdfPCell(new Paragraph("包裹运费:",font)));
cell = new PdfPCell(new Paragraph(String.valueOf(trackTicketModel.getPackage_freight()) + " ¥",font));
//合并单元格
cell.setColspan(3);
//内容居中
cell.setVerticalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
//第十四行
cell = new PdfPCell(new PdfPCell(new Paragraph("包裹备注:",font)));
//合并单元格
cell.setColspan(4);
table.addCell(cell);
//第十五行
cell = new PdfPCell(new Paragraph(trackTicketModel.getPackage_remark(),font));
//合并单元格
cell.setColspan(4);
//内容过多时自动换行
cell.setNoWrap(true);
table.addCell(cell);
//第十六行
table.addCell(new PdfPCell(new Paragraph("寄件人签名:",font)));
table.addCell("");
table.addCell(new PdfPCell(new Paragraph("快递员签名:",font)));
table.addCell("");
}catch (Exception e){
e.printStackTrace();
}
return table;
}
其中的中文不显示问题,采用windows的字体来解决
//中文问题
BaseFont bfChinese = BaseFont.createFont( “c://windows//fonts//simsun.ttc,1” , BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
可以下载simsun.ttc到c://windows//fonts//目录下
另一点需要注意一下:
String url = “G:\” + dateNowStr +”.PDF”;
File file = new File(url);
url路径”G:\”前面不能有空格否则会抛出异常
推荐一篇文章,对使用PDFTable比较不错
http://www.docin.com/p-23672859.html