The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > javax.print  [6 examples]

e701. The Quintessential Printing Program Using a Streaming Printing Service

A streaming print service is used to convert print data from one format to another. Unlike a print service that prints to a printer, a streaming print service writes to an output stream. This example demonstrates a program that prints an image to a postscript-generating streaming print service.
    import java.io.*;
    import javax.print.*;
    
    public class BasicStream {
        public static void main(String[] args) {
            try {
                // Open the image file
                InputStream is = new BufferedInputStream(
                    new FileInputStream("filename.gif"));
    
                // Prepare the output file to receive the postscript
                OutputStream fos = new BufferedOutputStream(
                    new FileOutputStream("filename.ps"));
    
                // Find a factory that can do the conversion
                DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;
                StreamPrintServiceFactory[] factories =
                    StreamPrintServiceFactory.lookupStreamPrintServiceFactories(
                        flavor,
                        DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType());
    
                if (factories.length > 0) {
                    StreamPrintService service = factories[0].getPrintService(fos);
    
                    // Create the print job
                    DocPrintJob job = service.createPrintJob();
                    Doc doc = new SimpleDoc(is, flavor, null);
    
                    // Monitor print job events; for the implementation of PrintJobWatcher,
                    // see e702 Determining When a Print Job Has Finished
                    PrintJobWatcher pjDone = new PrintJobWatcher(job);
    
                    // Print it
                    job.print(doc, null);
    
                    // Wait for the print job to be done
                    pjDone.waitForDone();
                    // It is now safe to close the streams
                }
    
                is.close();
                fos.close();
            } catch (PrintException e) {
            } catch (IOException e) {
            }
        }
    }

 Related Examples
e700. The Quintessential Printing Program Using a Printing Service
e702. Determining When a Print Job Has Finished
e703. Discovering Available Print Services
e704. Discovering Available Streaming Print Services
e705. Cancelling a Print Job


© 2002 Addison-Wesley.