8023045: [MacOSX] PrinterIOException when printing a JComponent
authorjgodinez
Thu, 15 Aug 2013 11:56:33 -0700
changeset 19354 e5a4f2784bf2
parent 19257 30a1d677a20c
child 19355 84011dfd634b
8023045: [MacOSX] PrinterIOException when printing a JComponent Reviewed-by: bae, jchen
jdk/src/share/classes/sun/print/PSPrinterJob.java
--- a/jdk/src/share/classes/sun/print/PSPrinterJob.java	Wed Jul 05 19:07:31 2017 +0200
+++ b/jdk/src/share/classes/sun/print/PSPrinterJob.java	Thu Aug 15 11:56:33 2013 -0700
@@ -339,6 +339,8 @@
     */
    private static Properties mFontProps = null;
 
+   private static boolean isMac;
+
     /* Class static initialiser block */
     static {
        //enable priviledges so initProps can access system properties,
@@ -347,6 +349,8 @@
                             new java.security.PrivilegedAction() {
             public Object run() {
                 mFontProps = initProps();
+                String osName = System.getProperty("os.name");
+                isMac = osName.startsWith("Mac");
                 return null;
             }
         });
@@ -473,6 +477,12 @@
                 PrintService pServ = getPrintService();
                 if (pServ != null) {
                     mDestination = pServ.getName();
+                   if (isMac) {
+                        PrintServiceAttributeSet psaSet = pServ.getAttributes() ;
+                        if (psaSet != null) {
+                            mDestination = psaSet.get(PrinterName.class).toString();
+                        }
+                    }
                 }
             }
         }
@@ -771,6 +781,12 @@
             PrintService pServ = getPrintService();
             if (pServ != null) {
                 mDestination = pServ.getName();
+               if (isMac) {
+                    PrintServiceAttributeSet psaSet = pServ.getAttributes();
+                    if (psaSet != null) {
+                        mDestination = psaSet.get(PrinterName.class).toString() ;
+                    }
+                }
             }
             PrinterSpooler spooler = new PrinterSpooler();
             java.security.AccessController.doPrivileged(spooler);