使用itext包生成pdf文件

最近在寫一個定時任務,定時生成一個pdf文件並實現發送的功能,在此給大家順帶講一下生成pdf文件的庫吧

生成pdf文件所用庫itext,具體操作如下:

 <dependency>
     <groupId>com.itextpdf</groupId>
     <artifactId>itextpdf</artifactId>
     <version>5.5.10</version>
</dependency>

如果輸出的是中文的話,那麼還需要引入下面這個包

<dependency>
     <groupId>com.itextpdf</groupId>
     <artifactId>itext-asian</artifactId>
     <version>5.2.0</version>
 </dependency>

他裏面有許多的類,我主要使用的是
com.itextpdf.text.Paragraph:表示一個縮進的文本段落,在段落中,你可以設置對齊方式,縮進,段落前後間隔等
import com.itextpdf.text.pdf.PdfPCell:相當於css進行樣式的管控
import com.itextpdf.text.pdf.PdfPTable:做表格功能

大概代碼如下:

public TaxFile swsxgkgzPDF(TaxisFxksfkTzs fxksfkTzs,byte[] bytes) throws IOException, com.itextpdf.text.DocumentException {
        Document document = new Document();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //格式化爲日期/時間字符串
        String cc=sdf.format(fxksfkTzs.getDyRq());
//        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("/usr/local/test1.pdf"));
        //頁面大小 PageSize.A4
        Rectangle rect = new Rectangle(new RectangleReadOnly(524.2F, 737.4F));
        //頁面背
        rect.setBackgroundColor(BaseColor.WHITE);
        //設置中文字體
        BaseFont baseFont = BaseFont.createFont("simhei.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        //四號字體
        Font _10Font = new Font(baseFont, 14);
        //三號字體
        Font _16Font = new Font(baseFont, 16);
        //二號字體
        Font _24Font = new Font(baseFont, 22);
        final int _leading = 25;
        final int _padding = 30;

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        PdfWriter.getInstance(document, byteArrayOutputStream);
        document.open();

        //qr
        PdfPCell cell = null;

        PdfPTable qrtable = new PdfPTable(100);
        qrtable.setWidthPercentage(100);
        qrtable.setHorizontalAlignment(Element.ALIGN_CENTER);

        Image qr = Image.getInstance(bytes);
        qr.scaleAbsolute(100f, 100f);
        qr.setAlignment(Image.MIDDLE);
        cell = new PdfPCell(qr);
        cell.setHorizontalAlignment(Element.ALIGN_LEFT);//水平
        cell.setVerticalAlignment(Element.ALIGN_BOTTOM);//垂直
        cell.setBorderColor(BaseColor.WHITE);
        cell.setColspan(100);
        qrtable.addCell(cell);
        document.add(qrtable);

        Paragraph _p = new Paragraph( fxksfkTzs.getDySwjg(), _16Font);
        _p.setAlignment(Element.ALIGN_CENTER);
        document.add(_p);
        Paragraph _p1 = new Paragraph(fxksfkTzs.getDyBt() +"\n", _24Font);
        _p1.setAlignment(Element.ALIGN_CENTER);
        document.add(_p1);
        Paragraph _p2 = new Paragraph(  fxksfkTzs.getDyJg()+fxksfkTzs.getDyZg() + "\n", _10Font);
        _p2.setAlignment(Element.ALIGN_CENTER);
        document.add(_p2);
        Paragraph _p3 = new Paragraph(fxksfkTzs.getNsrmc()+"(" +fxksfkTzs.getNsrsbh()+ ")\n", _10Font);
        _p3.setAlignment(Element.ALIGN_LEFT);
        _p3.setIndentationRight(_padding);
        _p3.setIndentationLeft(_padding);
        document.add(_p3);
        Paragraph _p4 = new Paragraph("    \n", _10Font);
        _p4.setAlignment(Element.ALIGN_LEFT);
        _p4.setLeading(_leading);
        _p4.setIndentationRight(_padding);
        _p4.setIndentationLeft(_padding);
        document.add(_p4);

        Paragraph _p5 = new Paragraph("   。\n", _10Font);
        _p5.setAlignment(Element.ALIGN_LEFT);
        _p5.setLeading(_leading);
        _p5.setIndentationRight(_padding);
        _p5.setIndentationLeft(_padding);
        document.add(_p5);

        Paragraph _p6 = new Paragraph("  \n", _10Font);
        _p6.setAlignment(Element.ALIGN_LEFT);
        _p6.setLeading(_leading);
        _p6.setIndentationRight(_padding);
        _p6.setIndentationLeft(_padding);
        document.add(_p6);

        Paragraph _p7 = new Paragraph("    。",_10Font);
        _p.setAlignment(Element.ALIGN_LEFT);
        _p7.setLeading(_leading);
        _p7.setIndentationRight(_padding);
        _p7.setIndentationLeft(_padding);
        document.add(_p7);

        Paragraph _p8 = new Paragraph("    ", _10Font);
        _p8.setAlignment(Element.ALIGN_LEFT);
        _p8.setLeading(_leading);
        _p8.setIndentationRight(_padding);
        _p8.setIndentationLeft(_padding);
        document.add(_p8);

        Paragraph _p9 = new Paragraph("\n\n");
        document.add(_p9);

        Paragraph _p10 = new Paragraph("" + fxksfkTzs.getDyLxr() + "\n", _10Font);
        _p10.setAlignment(Element.ALIGN_LEFT);
        _p10.setIndentationRight(_padding);
        _p10.setIndentationLeft(_padding);
        document.add(_p10);

        Paragraph _p11 = new Paragraph(":"+ fxksfkTzs.getDyLxdz() + "\n", _10Font);
        _p11.setAlignment(Element.ALIGN_LEFT);
        _p11.setIndentationRight(_padding);
        _p11.setIndentationLeft(_padding);
        document.add(_p11);

        Paragraph _p12 = new Paragraph("\n\n");
        document.add(_p12);

        Paragraph _p13 = new Paragraph("" + fxksfkTzs.getDySwjg() +"\n", _10Font);
        _p13.setAlignment(Element.ALIGN_RIGHT);
        _p13.setLeading(_leading);
        _p13.setIndentationRight(_padding);
        _p13.setIndentationLeft(_padding);
        document.add(_p13);

        Paragraph _p14 = new Paragraph(cc.substring(0,4)+"年"+ cc.substring(5,7)+"月"+cc.substring(8,10) +"日", _10Font);
        _p14.setAlignment(Element.ALIGN_RIGHT);
        _p14.setLeading(_leading);
        _p14.setIndentationRight(_padding);
        _p14.setIndentationLeft(_padding);
        document.add(_p14);


        document.close();
//        FileService fileService = new FileService();
        return fileService.saveFile("swsxgkgz", byteArrayOutputStream.toByteArray(), "pdf");
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章