Java Tutorial/PDF/Table

Материал из Java эксперт
Перейти к: навигация, поиск

Add table cell to table

import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document(PageSize.A4.rotate());
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable datatable = new PdfPTable(10);
    int headerwidths[] = { 10, 24, 12, 12, 7, 7, 7, 7, 7, 7 };
    datatable.setWidths(headerwidths);
    datatable.setWidthPercentage(100);
    datatable.getDefaultCell().setPadding(5);
    datatable.setHeaderRows(2);
    datatable.getDefaultCell().setBorderWidth(1);
    for (int i = 1; i < 30; i++) {
      datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
      datatable.addCell("myUserId");
      datatable.addCell("long long name");
      datatable.addCell("No Name Company");
      datatable.addCell("D" + i);
      datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
      for (int j = 0; j < 6; j++)
        datatable.addCell(Math.random() > .5 ? "Yes" : "No");
    }
    datatable.setSplitLate(false);
    document.add(datatable);
    document.close();
  }
}





Generates a PDF file with a table

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(3);
    PdfPCell cell = new PdfPCell(new Paragraph("header"));
    table.addCell(cell);
    table.addCell("1.1");
    table.addCell("2.1");
    table.addCell("3.1");
    table.addCell("1.2");
    table.addCell("2.2");
    table.addCell("3.2");
    document.add(table);
    document.close();
  }
}





Nested Pdf Table

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(4);
    PdfPTable nested1 = new PdfPTable(2);
    nested1.addCell("1.1");
    nested1.addCell("1.2");
    PdfPTable nested2 = new PdfPTable(1);
    nested2.addCell("20.1");
    nested2.addCell("20.2");
    for (int k = 0; k < 24; ++k) {
      if (k == 1) {
        table.addCell(nested1);
      } else if (k == 20) {
        table.addCell(new PdfPCell(nested2));
      } else {
        table.addCell("cell " + k);
      }
    }
    document.add(table);
    document.close();
  }
}





Pdf Table Split Vertically

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(10);
    for (int k = 1; k <= 100; ++k) {
      table.addCell("number " + k);
    }
    table.setTotalWidth(800);
    table.writeSelectedRows(0, 5, 0, -1, 50, 650, writer.getDirectContent());
    document.newPage();
    table.writeSelectedRows(5, -1, 0, -1, 50, 650, writer.getDirectContent());
    document.close();
  }
}





Pdf Table with Absolute Width

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(3);
    table.setTotalWidth(216f);
    table.setLockedWidth(true);
    PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
    cell.setColspan(3);
    table.addCell(cell);
    table.addCell("1.1");
    table.addCell("2.1");
    table.addCell("3.1");
    table.addCell("1.2");
    table.addCell("2.2");
    table.addCell("3.2");
    document.add(table);
    document.close();
  }
}





Pdf Table Without Borders

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(3);
    table.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
    PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
    cell.setColspan(3);
    table.addCell(cell);
    table.addCell("1.1");
    table.addCell("2.1");
    table.addCell("3.1");
    table.addCell("1.2");
    table.addCell("2.2");
    table.addCell("3.2");
    document.add(table);
    document.close();
  }
}//





Set Spacing Before/After a table

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(3);
    PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
    cell.setColspan(3);
    table.addCell(cell);
    table.addCell("2");
    table.setSpacingBefore(15f);
    document.add(table);
    table.setSpacingAfter(10f);
    document.add(table);
    document.close();
  }
}





Skip header

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(2);
    table.setWidthPercentage(100);
    table.setHeaderRows(1);
    PdfPCell h1 = new PdfPCell(new Paragraph("Header 1"));
    h1.setGrayFill(0.7f);
    table.addCell(h1);
    PdfPCell h2 = new PdfPCell(new Paragraph("Header 2"));
    h2.setGrayFill(0.7f);
    table.addCell(h2);
    PdfPCell cell;
    for (int row = 1; row <= 2000; row++) {
      document.add(table);
      table.deleteBodyRows();
      table.setSkipFirstHeader(true);
      cell = new PdfPCell(new Paragraph(String.valueOf(row)));
      table.addCell(cell);
      cell = new PdfPCell(new Paragraph("Quick brown fox jumps over the lazy dog."));
      table.addCell(cell);
    }
    document.add(table);
    document.close();
  }
}





Table Aligned

import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document();
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable table = new PdfPTable(3);
    PdfPCell cell = new PdfPCell(new Paragraph("header with colspan 3"));
    cell.setColspan(3);
    table.addCell(cell);
    table.addCell("1");
    table.addCell("2");
    table.addCell("3");
    table.setWidthPercentage(100);
    document.add(table);
    table.setWidthPercentage(50);
    table.setHorizontalAlignment(Element.ALIGN_RIGHT);
    document.add(table);
    table.setHorizontalAlignment(Element.ALIGN_LEFT);
    document.add(table);
    document.close();
  }
}





Use Table to create Report header

import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document(PageSize.A4.rotate());
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable datatable = new PdfPTable(10);
    int headerwidths[] = { 10, 24, 12, 12, 7, 7, 7, 7, 7, 7 };
    datatable.setWidths(headerwidths);
    datatable.setWidthPercentage(100);
    datatable.getDefaultCell().setPadding(5);
    PdfPCell cell = new PdfPCell(new Phrase("Report", FontFactory
        .getFont(FontFactory.HELVETICA, 24, Font.BOLD)));
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    cell.setBorderWidth(2);
    cell.setColspan(10);
    cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
    cell.setUseDescender(true);
    datatable.addCell(cell);
    document.add(datatable);
    document.close();
  }
}





We need 4 cells with rowspan 2

import java.awt.Color;
import java.io.FileOutputStream;
import java.io.IOException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.PageSize;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class MainClass {
  public static void main(String[] args) throws Exception {
    Document document = new Document(PageSize.A4.rotate());
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    PdfPTable datatable = new PdfPTable(10);
    int headerwidths[] = { 10, 24, 12, 12, 7, 7, 7, 7, 7, 7 };
    datatable.setWidths(headerwidths);
    datatable.setWidthPercentage(100);
    datatable.getDefaultCell().setPadding(5);

    datatable.getDefaultCell().setBorderWidth(2);
    datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
    datatable.addCell("User Id");
    datatable.addCell("Name\nAddress");
    datatable.addCell("Company");
    datatable.addCell("Department");

    PdfPTable permissions = new PdfPTable(6);
    permissions.getDefaultCell().setBorderWidth(2);
    permissions.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
    permissions.getDefaultCell().setColspan(6);
    permissions.addCell("Permissions");
    permissions.getDefaultCell().setColspan(1);
    permissions.addCell("Admin");
    permissions.addCell("Data");
    permissions.addCell("Expl");
    permissions.addCell("Prod");
    permissions.addCell("Proj");
    permissions.addCell("Online");
    PdfPCell permission = new PdfPCell(permissions);
    permission.setColspan(6);
    datatable.addCell(permission);
    document.add(datatable);
    document.close();
  }
}