快递公司业务管理系统将快递单信息转换为PDF

首先需要下载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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值