第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(); } } }