spire.pdf for java提供pdftable和pdfgrid两个类用于创建pdf表格,pdfgrid类更便于表格的格式化操作。本教程将展示如何使用pdfgrid类创建表格,并进行单元格合并、设置单元格背景、设置字体等格式化操作。
import com.spire.pdf.graphics.*;
import com.spire.pdf.grid.pdfgrid;
import java.awt.*;
public class creategrid {
public static void main(string[] args) {
//创建pdf文档
pdfdocument doc = new pdfdocument();
pdfpagebase page = doc.getpages().add();
//创建pdfgrid对象
pdfgrid grid = new pdfgrid();
//设置单元格内边距、默认字体、字体颜色和默认背景色
grid.getstyle().setcellpadding(new pdfpaddings(3,3,3,3));
grid.getstyle().setfont(new pdftruetypefont(new font("宋体", font.plain,10), true));
grid.getstyle().settextbrush(pdfbrushes.getblack());
grid.getstyle().setbackgroundbrush(pdfbrushes.getlightgray());
//创建pdfborders对象,并设置颜色及粗细
pdfborders borders= new pdfborders();
borders.setall(new pdfpen(pdfbrushes.getwhite(),1f));
//定义数据
string[] data = {"洲;国家;人口;世界人口占比;国旗",
"亚洲;中国;1,391,190,000;18.2%; ",
"亚洲;日本;126,490,000;1.66%; ",
"欧洲;英国;65,648,054;0.86%; ",
"欧洲;德国;82,665,600;1.08%; ",
"北美洲; 加拿大; 37,119,000; 0.49%; ",
"北美洲; 美国; 327,216,000; 4.29%; "
};
string[][] datasource = new string[data.length][];
for (int i = 0; i < data.length; i ) {
datasource[i] = data[i].split("[;]", -1);
}
//填充数据到表格
grid.setdatasource(datasource);
//在表格最后一列填充图片
grid.getrows().get(1).getcells().get(4).getstyle().setbackgroundimage(pdfimage.fromfile("f:\\documents\\flags\\flag-of-china.png"));
grid.getrows().get(2).getcells().get(4).getstyle().setbackgroundimage(pdfimage.fromfile("f:\\documents\\flags\\flag-of-japan.png"));
grid.getrows().get(3).getcells().get(4).getstyle().setbackgroundimage(pdfimage.fromfile("f:\\documents\\flags\\flag-of-united-kingdom.png"));
grid.getrows().get(4).getcells().get(4).getstyle().setbackgroundimage(pdfimage.fromfile("f:\\documents\\flags\\flag-of-germany.png"));
grid.getrows().get(5).getcells().get(4).getstyle().setbackgroundimage(pdfimage.fromfile("f:\\documents\\flags\\flag-of-canada.png"));
grid.getrows().get(6).getcells().get(4).getstyle().setbackgroundimage(pdfimage.fromfile("f:\\documents\\flags\\flag-of-united-states-of-america.png"));
//设置最后一列列宽
grid.getcolumns().get(grid.getcolumns().getcount()-1).setwidth(60f);
//纵向合并单元格
grid.getrows().get(1).getcells().get(0).setrowspan(2);
grid.getrows().get(3).getcells().get(0).setrowspan(2);
grid.getrows().get(5).getcells().get(0).setrowspan(2);
for (int i = 0; i < data.length ; i ) {
//设置每一行的高度
grid.getrows().get(i).setheight(30f);
//设置第一列的背景色
grid.getrows().get(i).getcells().get(0).getstyle().setbackgroundbrush(pdfbrushes.getdarkgray());
//设置第一列的字体
grid.getrows().get(i).getcells().get(0).getstyle().setfont(new pdftruetypefont(new font("arial unicode ms",font.plain,12),true));
for (int j = 0; j < grid.getcolumns().getcount(); j ) {
//设置所有单元格的边框样式
grid.getrows().get(i).getcells().get(j).getstyle().setborders(borders);
//设置所有单元格内的文字对齐方式
grid.getrows().get(i).getcells().get(j).setstringformat(new pdfstringformat(pdftextalignment.center,pdfverticalalignment.middle));
//设置第一行的字体
grid.getrows().get(0).getcells().get(j).getstyle().setfont(new pdftruetypefont(new font("arial unicode ms",font.plain,12),true));
//设置第一行的背景色
grid.getrows().get(0).getcells().get(j).getstyle().setbackgroundbrush(pdfbrushes.getdarkgray());
}
}
//绘制表格到pdf
grid.draw(page,0,30);
//保存文档
doc.savetofile("grid.pdf");
doc.close();
}
}