Package com.lowagie.examples.objects.tables.alternatives

Source Code of com.lowagie.examples.objects.tables.alternatives.JTable2Pdf

/*
* $Id$
*
* This code is part of the 'iText Tutorial'.
* You can find the complete tutorial at the following address:
* http://itextdocs.lowagie.com/tutorial/
*
* This code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* itext-questions@lists.sourceforge.net
*/
package com.lowagie.examples.objects.tables.alternatives;

import java.awt.BorderLayout;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JToolBar;

import com.lowagie.text.LwgDocument;
import com.lowagie.text.LwgPageSize;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfWriter;
import org.geoforge.demo.GfrFileOutputStream;

/**
* Constructing a JTable and printing it to PDF.
*/
public class JTable2Pdf extends JFrame {
    private static final long serialVersionUID = 8461166420041411734L;
  /** The JTable we will show in a Swing app and print to PDF. */
    private JTable table;
   
    /**
     * Constructor for PrintJTable.
     */
    public JTable2Pdf() {
        getContentPane().setLayout(new BorderLayout());
        setTitle("JTable test");
        createToolbar();
        createTable();
       
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e)
            {System.exit(0);}
        });       
    }
   
    /**
     * Create a table with some dummy data
     */
    private void createTable() {
        Object[][] data ={
            {"Mary", "Campione", "Snowboarding", new
             Integer(5), Boolean.FALSE},
             {"Alison", "Huml", "Rowing", new
              Integer(3), Boolean.TRUE},
              {"Kathy", "Walrath", "Chasing toddlers",
               new Integer(2), Boolean.FALSE},
               {"Mark", "Andrews", "Speed reading", new
                Integer(20), Boolean.TRUE},
                {"Angela", "Lih", "Teaching high school", new Integer(4), Boolean.FALSE}
        };
       
        String[] columnNames =
        {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};
       
        table = new JTable(data, columnNames);
       
        // Use a panel to contains the table and add it the frame
        JPanel tPanel = new JPanel(new BorderLayout());
        tPanel.add(table.getTableHeader(), BorderLayout.NORTH);
        tPanel.add(table, BorderLayout.CENTER);
       
        getContentPane().add(tPanel, BorderLayout.CENTER);
    }
   
    /**
     * Toolbar for print and exit
     */
    private void createToolbar() {
        JToolBar tb = new JToolBar();
       
        JButton printBtn = new JButton("Print");
        printBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                print();
            }
        });
       
        JButton exitBtn = new JButton("Exit");
        exitBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                exit();
            }
        });
       
        tb.add(printBtn);
        tb.add(exitBtn);
       
        getContentPane().add(tb, BorderLayout.NORTH);
    }
    /**
     * Print the table into a PDF file
     */
    private void print() {
        LwgDocument document = new LwgDocument(LwgPageSize.A4.rotate());
        try {
            PdfWriter writer =
            PdfWriter.getInstance(document,
                    new GfrFileOutputStream("com.lowagie.examples.objects.tables.alternatives.JTable2Pdf.pdf"));
           
            document.open();
            PdfContentByte cb = writer.getDirectContent();
           
            // Create the graphics as shapes
            cb.saveState();
            Graphics2D g2 = cb.createGraphicsShapes(500, 500);
            // Print the table to the graphics
            Shape oldClip = g2.getClip();
            g2.clipRect(0, 0, 500, 500);
            table.print(g2);
            g2.setClip(oldClip);
           
            g2.dispose();
            cb.restoreState();
           
            document.newPage();
           
            // Create the graphics with pdf fonts
            cb.saveState();
            g2 = cb.createGraphics(500, 500);
           
            // Print the table to the graphics
            oldClip = g2.getClip();
            g2.clipRect(0, 0, 500, 500);
            table.print(g2);
            g2.setClip(oldClip);
           
            g2.dispose();
            cb.restoreState();
           
        } catch (Exception e) {
          e.printStackTrace();
            System.err.println(e.getMessage());
        }
       
        document.close();
    }
   
    /**
     * Exit app
     */
    private void exit() {
        System.exit(0);
    }   
  /**
   * A very simple PdfPTable example.
   *
   * @param args
   *            no arguments needed
   */
  public static void main(String[] args) {
        System.out.println("Printing a JTable");
        JTable2Pdf frame = new JTable2Pdf();
        frame.pack();
        frame.setVisible(true);
        frame.print();
        frame.dispose();
  }
}
TOP

Related Classes of com.lowagie.examples.objects.tables.alternatives.JTable2Pdf

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.