# java.awt.print

***

**1. Printing a Simple Text Document**

```java
import java.awt.print.PrinterJob;
import java.text.MessageFormat;

public class SimpleTextPrint {

    public static void main(String[] args) {
        String text = "This is a simple text document.";

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        String[] lines = text.split("\n");
        PageFormat pf = job.defaultPage();
        Paper paper = pf.getPaper();
        double margin = 30;
        paper.setImageableArea(margin, margin, paper.getWidth() - 2 * margin, paper.getHeight() - 2 * margin);
        pf.setPaper(paper);
        Printable printable = (pg, pgf, index) -> {
            if (index >= lines.length) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.setFont(new Font("Arial", Font.PLAIN, 12));
            g.drawString(lines[index], (int) margin, (int) (margin + g.getFont().getSize() * index));
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**2. Printing an Image**

```java
import java.awt.print.PrinterJob;

public class ImagePrint {

    public static void main(String[] args) {
        // Create an image
        BufferedImage image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        g.setColor(Color.RED);
        g.fillOval(50, 50, 200, 200);

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g2 = pg.getGraphics();
            g2.drawImage(image, 0, 0, null);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**3. Printing a PDF Document**

```java
import java.awt.print.PrinterJob;
import java.io.File;

public class PdfPrint {

    public static void main(String[] args) {
        // Create a PDF document
        File pdfFile = new File("document.pdf");

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
        InputStream is = new FileInputStream(pdfFile);
        PrintRequestAttributeSet pras = new PrintRequestAttributeSet();
        pras.add(MediaSizeName.ISO_A4);
        job.setPrintable(new PdfPrintable(is));

        // Print the document
        if (job.printDialog()) {
            try {
                job.print(pras);
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**4. Printing a HTML Document**

```java
import java.awt.print.PrinterJob;
import java.net.URL;

public class HtmlPrint {

    public static void main(String[] args) {
        // Create a URL for the HTML document
        URL url = new URL("http://www.example.com");

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        DocFlavor flavor = DocFlavor.INPUT_STREAM.HTML;
        InputStream is = url.openStream();
        PrintRequestAttributeSet pras = new PrintRequestAttributeSet();
        pras.add(MediaSizeName.ISO_A4);
        job.setPrintable(new HtmlPrintable(is));

        // Print the document
        if (job.printDialog()) {
            try {
                job.print(pras);
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**5. Printing a Swing Component**

```java
import java.awt.print.PrinterJob;
import javax.swing.JPanel;

public class SwingPrint {

    public static void main(String[] args) {
        // Create a Swing component
        JPanel panel = new JPanel();
        panel.setBackground(Color.RED);
        panel.setPreferredSize(new Dimension(300, 300));

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            panel.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**6. Printing a Multi-Page Document**

```java
import java.awt.print.PrinterJob;

public class MultiPagePrint {

    public static void main(String[] args) {
        // Create a multi-page document
        String[] pages = {"Page 1", "Page 2", "Page 3"};

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index >= pages.length) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.setFont(new Font("Arial", Font.PLAIN, 12));
            g.drawString(pages[index], 100, 100);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**7. Printing a Table**

```java
import java.awt.print.PrinterJob;
import javax.swing.JTable;

public class TablePrint {

    public static void main(String[] args) {
        // Create a JTable
        JTable table = new JTable(new DefaultTableModel(new Object[][]{{"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"}}, new String[]{"Column 1", "Column 2", "Column 3"}));

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            table.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**8. Printing a Tree**

```java
import java.awt.print.PrinterJob;
import javax.swing.JTree;

public class TreePrint {

    public static void main(String[] args) {
        // Create a JTree
        JTree tree = new JTree(new DefaultMutableTreeNode("Root"));

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            tree.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**9. Printing a List**

```java
import java.awt.print.PrinterJob;
import javax.swing.JList;

public class ListPrint {

    public static void main(String[] args) {
        // Create a JList
        JList list = new JList(new String[]{"Item 1", "Item 2", "Item 3"});

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            list.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**10. Printing a ComboBox**

```java
import java.awt.print.PrinterJob;
import javax.swing.JComboBox;

public class ComboBoxPrint {

    public static void main(String[] args) {
        // Create a JComboBox
        JComboBox comboBox = new JComboBox(new String[]{"Item 1", "Item 2", "Item 3"});

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            comboBox.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**11. Printing a TextField**

```java
import java.awt.print.PrinterJob;
import javax.swing.JTextField;

public class TextFieldPrint {

    public static void main(String[] args) {
        // Create a JTextField
        JTextField textField = new JTextField("This is a text field.");

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            textField.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**12. Printing a TextArea**

```java
import java.awt.print.PrinterJob;
import javax.swing.JTextArea;

public class TextAreaPrint {

    public static void main(String[] args) {
        // Create a JTextArea
        JTextArea textArea = new JTextArea("This is a text area.");

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            textArea.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**13. Printing a PasswordField**

```java
import java.awt.print.PrinterJob;
import javax.swing.JPasswordField;

public class PasswordFieldPrint {

    public static void main(String[] args) {
        // Create a JPasswordField
        JPasswordField passwordField = new JPasswordField("password");

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            passwordField.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**14. Printing a Spinner**

```java
import java.awt.print.PrinterJob;
import javax.swing.JSpinner;

public class SpinnerPrint {

    public static void main(String[] args) {
        // Create a JSpinner
        JSpinner spinner = new JSpinner(new SpinnerListModel(new String[]{"Item 1", "Item 2", "Item 3"}));

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.NO_SUCH_PAGE;
            }
            Graphics g = pg.getGraphics();
            g.translate(pgf.getImageableX(), pgf.getImageableY());
            spinner.print(g);
            return Printable.PAGE_EXISTS;
        };
        job.setPrintable(printable);

        // Print the document
        if (job.printDialog()) {
            try {
                job.print();
            } catch (PrinterException ex) {
                System.out.println("Error printing: " + ex.getMessage());
            }
        }
    }
}
```

**15. Printing a ColorChooser**

```java
import java.awt.print.PrinterJob;
import javax.swing.JColorChooser;

public class ColorChooserPrint {

    public static void main(String[] args) {
        // Create a JColorChooser
        JColorChooser colorChooser = new JColorChooser();

        // Create a PrinterJob object
        PrinterJob job = PrinterJob.getPrinterJob();

        // Set the printable content
        Printable printable = (pg, pgf, index) -> {
            if (index > 0) {
                return Printable.

```
