dreamstone 发表于 2013-1-27 06:10:44

使用IText打印PDF

IText是开源的,对与打印PDF做的还不错,下边一个例子关于IText的,列出了大部份常用的功能。
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee;">http://www.agoit.com/Images/OutliningIndicators/None.gifimport java.io.FileOutputStream;
http://www.agoit.com/Images/OutliningIndicators/None.gif
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.Cell;
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.Document;
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.Font;
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.PageSize;
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.Paragraph;
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.Table;
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.pdf.BaseFont;
http://www.agoit.com/Images/OutliningIndicators/None.gifimport com.lowagie.text.pdf.PdfWriter;
http://www.agoit.com/Images/OutliningIndicators/None.gif
http://www.agoit.com/Images/OutliningIndicators/None.gif
http://www.agoit.com/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedBlock.gifpublic class Example http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    private static Font FONT_11;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    private static BaseFont msgothic;
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif    public static void main(String[] args) throws Exceptionhttp://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        tryhttp://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            //定义字体
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            msgothic = BaseFont.createFont("D:\\workspace\\UseIText\\MSMINCHO.TTC,0",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            FONT_11=new Font(msgothic);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            FONT_11.setSize(11);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        }catch(Exception e)http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            e.printStackTrace();
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //为了测试方便,加入自动关闭打开acrord32
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        Runtime.getRuntime().exec("tskill acrord32").waitFor();
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        Thread.sleep(1000);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        Document document=new Document(PageSize.A4.rotate());
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //写文件
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        PdfWriter writer=PdfWriter.getInstance(document, new FileOutputStream("d:/temp.pdf"));
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        document.open();
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        makeDocument(document);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        document.close();
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //为了测试方便,加入自动关闭打开acrord32
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        Runtime.getRuntime().exec("\"c:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\acrord32.exe\" d:/temp.pdf").waitFor();
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif    public static void makeDocument(Document document)throws Exceptionhttp://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //table大部份操做类似与html,下边是一些常用的参数
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //3是总的列数,也可以同时指定行数和列数new Table(3,4)
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        Table table=new Table(3);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //table的宽度
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        table.setWidth(98);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //类似html的cellSpaceing
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        table.setSpacing(2);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //每一列的宽度,是比例不是固定宽度
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        table.setWidths(new int[]http://www.agoit.com/Images/dot.gif{10,30,60});
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //对齐方式
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        table.setAlignment("CENTER");
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //table是否有边框
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        table.setBorder(0);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //cell默认是否有边框
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        table.setDefaultCellBorder(0);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //自动填充空白
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        table.setAutoFillEmptyCells(true);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        int n=10;
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        for(int i=0;i<n;i++)http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            makeContent(table);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        //新的一页要加上这句
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        document.newPage();
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        for(int i=0;i<n;i++)http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            makeContent(table);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        document.add(table);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif    public static void  makeContent(Table table)throws Exception http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        int len = table.columns();
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        for(int i=0;i<len;i++)http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            String testStr = "test"+i+"xxxxxxxxxxxxxxxxxxxxxx";
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            Cell cell=new Cell(testStr);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            //max lines ,设置成1防止换行,配合cell宽度,可以实现自动截取
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            cell.setMaxLines(1);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            table.addCell(cell);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif    //构造一个自定义的cell
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif    public static Cell makeCell(int colspan,String align,int maxLines,Font font)http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        Cell cell = null;
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        Paragraph paragraph =null;
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        tryhttp://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            //使用自定义字体
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            paragraph=new Paragraph("testxxx",font);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            cell=new Cell(paragraph);
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            //设置colspan,同样的方法可以设置rowspan
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif            if(colspan >1)http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif                cell.setColspan(colspan);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            //设置对齐
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif            if((align != null) && (!align.equals("")))http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif                cell.setHorizontalAlignment(align);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            //设置maxlines
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            cell.setMaxLines(maxLines);
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.agoit.com/Images/OutliningIndicators/ContractedSubBlock.gif        }catch(Exception e)http://www.agoit.com/Images/dot.gif{
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif            e.printStackTrace();
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.agoit.com/Images/OutliningIndicators/InBlock.gif        return cell;
http://www.agoit.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.agoit.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.agoit.com/Images/OutliningIndicators/None.gif
页: [1]
查看完整版本: 使用IText打印PDF