EeBlog(テクニカルブログ)

第88回 Java Print Service API その6

引き続き「Java Print Service API」について学んでいきます。

今回はストリーム印刷サービスを使用した書式の変換を学びます。

Java Print Service APIでは、ストリーム印刷サービスを使用して、書式を変換できます。
対応プリンタが少ない書式でも、手持ちのプリンタで出力可能な書式にすればよいわけですね。

ストリーム印刷サービスを表すのはStreamPrintServiceクラスです。
通常のPrintServiceと異なり、StreamPrintServiceFactoryクラスを使用してインスタンスを取得します。

では、実際にストリーム印刷サービスを使用した書式の変換を行ってみましょう。
今回のサンプルでは、JPEG画像をPostscriptに変換します。(Java5以降)

 import java.io.FileInputStream;
 import java.io.FileOutputStream;


 import javax.print.DocFlavor;
 import javax.print.SimpleDoc;
 import javax.print.StreamPrintService;
 import javax.print.StreamPrintServiceFactory;


 public class StreamPrintServiceTest {
     public static void main(String args[]) throws Exception {
         FileInputStream fileInputStream = null;
         FileOutputStream fileOutputStream = null;
         try {
             // 入力ファイル
            fileInputStream = new FileInputStream("D:\\sample.jpg");
             DocFlavor docFlavor = DocFlavor.INPUT_STREAM.JPEG;


             // 出力ファイル
            fileOutputStream = new FileOutputStream("D:\\sample.ps");
             String mimeType = DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType();


             // ストリーム印刷サービス取得
            StreamPrintServiceFactory[] streamPrintServiceFactoryArray = StreamPrintServiceFactory.lookupStreamPrintServiceFactories(docFlavor, mimeType);
             if (streamPrintServiceFactoryArray.length != 0) {
                 // 印刷
                StreamPrintService streamPrintService = streamPrintServiceFactoryArray[0].getPrintService(fileOutputStream);
                 streamPrintService.createPrintJob().print(new SimpleDoc(fileInputStream, docFlavor, null), null);
             }
         } finally {
             fileInputStream.close();
             fileOutputStream.close();
         }
     }
 }