In this article, you'll learn how to add a grid to PDF and how to format the grid as well, by using Spire.PDF with Java.
import com.spire.pdf.graphics.*; import com.spire.pdf.grid.PdfGrid; import java.awt.*; public class CreateGrid { public static void main(String[] args) { //create a pdf document PdfDocument doc = new PdfDocument(); PdfPageBase page = doc.getPages().add(); //create a PdfGrid object PdfGrid grid = new PdfGrid(); //set the cell padding, font, text brush, background brush of the grid grid.getStyle().setCellPadding(new PdfPaddings(3,3,3,3)); grid.getStyle().setFont(new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN,10), true)); grid.getStyle().setTextBrush(PdfBrushes.getBlack()); grid.getStyle().setBackgroundBrush(PdfBrushes.getLightGray()); //create a PdfBorders object PdfBorders borders= new PdfBorders(); borders.setAll(new PdfPen(PdfBrushes.getWhite(),1f)); //define sample data String[] data = {"Continent;Country;Population;Ratio to World Pop;Flag", "Asia;China;1,391,190,000;18.2%; ", "Asia;Japan;126,490,000;1.66%; ", "Europe;United Kingdom;65,648,054;0.86%; ", "Europe;Germany;82,665,600;1.08%; ", "North America; Canada; 37,119,000; 0.49%; ", "North America; United States; 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); } //fill the grid with data grid.setDataSource(dataSource); //fill the cells with background images 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")); //set the width of the last column grid.getColumns().get(grid.getColumns().getCount()-1).setWidth(60f); //vertically span cells 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++) { //set the height of each row grid.getRows().get(i).setHeight(30f); //set the background color of the first column grid.getRows().get(i).getCells().get(0).getStyle().setBackgroundBrush(PdfBrushes.getDarkGray()); //set the font of the first column grid.getRows().get(i).getCells().get(0).getStyle().setFont(new PdfTrueTypeFont(new Font("Arial",Font.PLAIN,12),true)); for (int j = 0; j < grid.getColumns().getCount(); j++) { //apply border style to all cells grid.getRows().get(i).getCells().get(j).getStyle().setBorders(borders); //apply text alignment to all cells grid.getRows().get(i).getCells().get(j).setStringFormat(new PdfStringFormat(PdfTextAlignment.Center,PdfVerticalAlignment.Middle)); //set the font of the first row grid.getRows().get(0).getCells().get(j).getStyle().setFont(new PdfTrueTypeFont(new Font("Arial",Font.PLAIN,12),true)); //set the background color of the first row grid.getRows().get(0).getCells().get(j).getStyle().setBackgroundBrush(PdfBrushes.getDarkGray()); } } //draw grid on the pdf page grid.draw(page,0,30); //save to file doc.saveToFile("Grid.pdf"); doc.close(); } }