Printing Multipage Text Documents
The printing examples we’ve seen so far print GUI
components on a single page. Printing multipage documents is more
interesting, but also trickier, because we have to decide where to
place the page breaks. Example
13-4 shows how this can be done. This HardcopyWriter
class is a custom java.io.Writer
stream that uses the Java 1.1
Printing API to print the characters sent through it, inserting line
breaks and page breaks as necessary.
The HardcopyWriter
class includes two demonstration programs as inner classes. The first,
PrintFile
, reads a specified text
file and prints it by sending its contents to a HardcopyWriter
stream. The second, Demo
, prints a demonstration page that shows
off the font and tabbing capabilities of the class, as shown in Figure 13-4.
Figure 13-4. Demonstration page printed by HardcopyWriter
Example 13-4 is long
but worth studying. In addition to demonstrating the Java 1.1 Printing
API again, it shows an approach to paginating a text document. It is
also a useful example of a custom Writer
stream.
Example 13-4. HardcopyWriter.java
package je3.print; import java.awt.*; import java.awt.event.*; import java.io.*; import java.text.*; import java.util.*; /** * A character output stream that sends output to a printer. **/ public class HardcopyWriter extends Writer { // These are the instance variables for the class protected PrintJob ...
Get Java Examples in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.