軟體描述
軟體包 javax.print 的描述
為 JavaTM Print Service API 提供了主要類和接口。
主要功能
Java Print Service API 允許客戶端和伺服器應用程式具備如下功能:
根據其性能發現並選擇 PrintService。
指定列印數據的格式。
向支持所列印文檔類型的服務提交 PrintJob。
PrintService 發現
應用程式可調用抽象類 PrintServiceLookup 的靜態方法來查找 PrintService,這些 PrintService 具有滿足應用程式列印要求的功能。例如,要列印雙面文檔,應用程式首先需要找到具有雙面列印功能的印表機。
JDK 包括的 PrintServiceLookup 實現可查找標準的平台印表機。要查找其他類型的印表機(如 IPP 印表機或 JINI 印表機),PrintService 提供程式可寫入 PrintServiceLookup 實現。PrintService 提供程式可使用《SPI JAR file specification》動態地安裝這些 PrintServiceLookup 實現。
屬性定義
javax.print.attribute 和 javax.print.attribute.standard 包定義了列印屬性,這些屬性描述了 PrintService 的功能、指定 PrintJob 的要求並跟蹤 PrintJob 的進度。
javax.print.attribute 包描述了屬性類型和屬性分類方法。javax.print.attribute.standard 包枚舉了 API 所支持的所有標準屬性,其中大多數是在 IETF 規範《RFC 2911 Internet Printing Protocol, 1.1:Model and Semantics》(2000 年 9 月)中所指定的屬性實現。javax.print.attribute.standard 中指定的屬性包括常見的功能,如:解析度、份數、介質大小、作業優先權和頁面範圍。
文檔類型規範
DocFlavor 類表示了列印數據的格式,如 JPEG 或 PostScript。DocFlavor 對象由 MIME 類型(描述了格式)和文檔表示形式類名(指示如何將文檔傳送到印表機或輸出流)所組成。應用程式使用 DocFlavor 和屬性集來查找某些印表機,這些印表機可列印由 DocFlavor 所指定的文檔類型且具有屬性集所指定的功能。
使用 API
典型的應用程式使用 Java Print Service API 執行以下步驟來處理列印請求:
選擇一個 DocFlavor。
創建一個屬性集。
找到一個可處理由 DocFlavor 和屬性集所指定的列印請求的 PrintService。
創建一個 Doc 對象,該對象封裝 DocFlavor 和實際的列印數據,這些列印數據可採用很多形式,包括:Postscript 檔案、JPEG 圖像、URL 或純文本。
從 PrintService 獲得一個由 DocPrintJob 表示的 PrintJob。
調用 PrintJob 的 print 方法。
以下代碼示例說明了 Java Print Service API 的典型用法:找到可在 A4 大小的紙張上列印 5 份 Postscript 文檔雙面副本的印表機、根據某個返回的 PrintService 創建 PrintJob 並調用 print 方法。
FileInputStream psStream;
try {
psStream = new FileInputStream("file.ps");
} catch (FileNotFoundException ffne) {
}
if (psStream == null) {
return;
}
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;
Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
PrintRequestAttributeSet aset =
new HashPrintRequestAttributeSet();
aset.add(new Copies(5));
aset.add(MediaSize.A4);
aset.add(Sides.DUPLEX);
PrintService[] services =
PrintServiceLookup.lookupPrintServices(psInFormat, aset);
if (services.length > 0) {
DocPrintJob job = services[0].createPrintJob();
try {
job.print(myDoc, aset);
} catch (PrintException pe) {}
}
請注意:在 javax.print API 中,只有在方法中顯式記錄傳遞給方法的 null 引用參數具有有意義的解釋時,該參數才是正確的。否則就是錯誤的編碼方式,並且可能立即或在稍後某時導致運行時異常。IllegalArgumentException 和 NullPointerException 是典型的異常示例,並且是這種情況可接受的運行時異常。
從以下版本開始:
1.4