Java中利用IText7生成PDF
阿新 • • 發佈:2019-01-11
下面介紹幾種IText7生成PDF的一些頁面元素的方法:
(官網http://developers.itextpdf.com/)
1、新增表格
import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Cell; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.element.Table; import com.itextpdf.layout.property.HorizontalAlignment; import com.itextpdf.layout.property.UnitValue; public class Test { public static final String DEST2 = "E:\\project\\test4.pdf";//檔案路徑 public static void test(String dest) throws Exception{ PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest)); Document doc = new Document(pdfDoc);//構建文件物件 PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);//中文字型 Table table = new Table(new float[]{2,4,4}).setWidth(UnitValue.createPercentValue(100));//構建表格以100%的寬度 Cell cell1=new Cell().add(new Paragraph("表格1")).setFont(sysFont);//向表格新增內容 Cell cell2=new Cell().add(new Paragraph("表格2")).setFont(sysFont); Cell cell3=new Cell().add(new Paragraph("表格3")).setFont(sysFont); table.addCell(cell1); table.addCell(cell2); table.addCell(cell3); doc.add(table.setHorizontalAlignment(HorizontalAlignment.CENTER));//將表格新增入文件並頁面居中 doc.close(); } public static void main(String[] args) throws Exception { test(DEST2); } }
效果如下
其中new float[]{2,4,4}為設定每個表格的大小比例
2設定表格背景顏色以及邊框顏色
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
Document doc = new Document(pdfDoc);
PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
Table table = new Table(new float[]{2,4,4}).setWidth(UnitValue.createPercentValue(70));
Cell cell1=new Cell().add(new Paragraph("表格1")).setFont(sysFont).setBackgroundColor(new DeviceRgb(221,234,238));
Cell cell2=new Cell().add(new Paragraph("表格2")).setFont(sysFont).setFontSize(10).setTextAlignment(TextAlignment.CENTER);
Cell cell3=new Cell().add(new Paragraph("表格3")).setFont(sysFont).setBorder(new SolidBorder(new DeviceRgb(221,234,238), 1));
Cell cell4=new Cell().add(new Paragraph("表格4")).setFont(sysFont).setBorder(Border.NO_BORDER);
table.addCell(cell1);
table.addCell(cell2);
table.addCell(cell3);
table.addCell(cell4);
doc.add(table);
doc.close();
效果如下(顏色為rgb顏色)
3向表格裡新增文字和圖片
String Image = "E:\\project\\1.jpg";// 圖片路徑
Table tab = new Table(new float[] { 6, 3 });
tab.setWidthPercent(80);
tab.setHorizontalAlignment(HorizontalAlignment.CENTER);
Image Img = new Image(ImageDataFactory.create(Image));
Cell cellimg = new Cell().add(Img.setAutoScale(true))// 向第一個表格中新增圖片
.setBorder(new SolidBorder(new DeviceRgb(148,0,211), 3));
//.setBorder(Border.NO_BORDER);
tab.addCell(cellimg);
Cell cell = new Cell();
// 文字樣式
Text text1 = new Text("人類的海洋").setFont(sysFont)
.setFontSize((float) 7.41)
.setFontColor(new DeviceRgb(46, 46, 46)).setBold();// setBold()字型為加粗
Text text2 = new Text("保護地球是我們共同的責任,讓我們一起努力,讓我們的地球更美好")
.setFont(sysFont).setFontSize((float) 7.41)
.setFontColor(new DeviceRgb(46, 46, 46));
cell.setTextAlignment(TextAlignment.LEFT)
// 字型居左
.add(new Paragraph().add(text1).add("\n").add(text2)
.setFixedLeading(15))// setFixedLeading為設定行間距
.setBorder(new SolidBorder(new DeviceRgb(139,0,139), 3))//邊界顏色,邊界寬度
.setBackgroundColor(new DeviceRgb(244, 248, 250));
tab.addCell(cell);
doc.add(tab.setHorizontalAlignment(HorizontalAlignment.LEFT));// 將表格新增入文件並頁面居中
doc.close();
效果如下(顏色為rgb顏色)
4新增空行
Paragraph blankParagraph1 = new Paragraph("");
for (int i = 0; i < 25; i++) {
doc.add(blankParagraph1);
}
5向指定位置新增元素
float leftEdge = 66;
doc.setLeftMargin(leftEdge);// 左側邊距
Image titleImg1=null;
try {
titleImg1 = new Image(ImageDataFactory.create(Image),leftEdge,20);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
titleImg1.setWidth(262);
doc.add(titleImg1);
效果如下(將圖片放置在距離頁面左側66px,距離底部20px的位置)