最近在寫一個定時任務,定時生成一個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");
}