首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java高級編程:使用打印服務API

     編輯:Java 程式設計入門

Java打印服務API(JPS)深度解析:從舊有機制到現代標準

Java早期打印支持薄弱:1.0無打印,1.1引入PrintJob粗糙不可靠,1.2提供PrinterJob與java.awt.print(Java2D Printing API),但仍受限於Graphics圖形繪製、無法程序化選擇打印機、屬性設置有限。J2SE 1.3擴展JobAttributes/PageAttributes,問題依存。J2SE 1.4引入javax.print包(Java Print Service API)徹底改變局面,突破舊有限制,成為當前標準。

JPS核心四步驟

  1. 查找打印服務:PrintServiceLookup.lookupPrintServices(flavor, attributes),按文檔風味(DocFlavor)與屬性集篩選支持的打印機。
  2. 創建打印作業:DocPrintJob job = service.createPrintJob()。
  3. 構建文檔與屬性:實現Doc接口封裝數據(如SimpleDoc),可選構建PrintRequestAttributeSet指定份數、雙面、頁邊距等。
  4. 提交打印:job.print(doc, attributeSet)。

DocFlavor:描述數據格式與表示類

DocFlavor由MIME類型+表示類組成。預定義靜態內部類覆蓋常見組合:

表示類對應內部類典型MIME示例
byte[]DocFlavor.BYTE_ARRAYGIF, JPEG, PNG, POSTSCRIPT, TEXT_PLAIN
InputStreamDocFlavor.INPUT_STREAM同上
URLDocFlavor.URL同上
char[]DocFlavor.CHAR_ARRAYTEXT_PLAIN, TEXT_HTML
ReaderDocFlavor.READER同上
StringDocFlavor.STRINGTEXT_PLAIN, TEXT_HTML
可打印服務格式化DocFlavor.SERVICE_FORMATTEDPAGEABLE, PRINTABLE, RENDERABLE_IMAGE

例如:DocFlavor flavor = DocFlavor.URL.GIF; 表示通過URL打印GIF圖片。

選擇正確打印機

直接傳遞DocFlavor給lookupPrintServices,僅返回支持該格式的服務:

DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
for (PrintService svc : services) System.out.println(svc.getName());

若不指定風味(null,null)則列出所有可用打印機。

屬性集控制打印選項

使用HashPrintRequestAttributeSet添加標準屬性:

PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
attrs.add(new Copies(2));
attrs.add(Sides.DUPLEX);
attrs.add(MediaSizeName.ISO_A4);
job.print(doc, attrs);

JPS將文檔格式、打印機能力、作業屬性解耦,提供工業級打印解決方案,完全取代舊有PrintJob/PrinterJob機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved