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

