Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4201135

When will printing images be faster - per eval section of bug ID 4149301?

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 1.2.0
    • client-libs
    • 2d
    • x86
    • windows_nt


      NT 4.0 / Service pack 3,
      Using HP 4M Plus printer on the network.



      Thanks,

      Rip
      (Review ID: 49129)
      ======================================================================


      Name: dbT83986 Date: 01/06/99


      I am experiencing 15 minute print times if I have just one image in my print job.


      1. Steps: Just invoke printing programatically using a JComponent that implements the Printable interface.

      2. Source code:

      package ps.somepackagename;

      import java.awt.Graphics2D;
      import java.awt.Graphics;
      import java.awt.Color;
      import java.awt.Image;
      import java.awt.Point;
      import java.awt.geom.AffineTransform;
      import java.awt.RenderingHints;
      import java.awt.Dimension;
      import java.awt.Cursor;
      import java.awt.Frame;
      import java.awt.Font;

      import java.awt.print.Printable;
      import java.awt.print.PrinterJob;
      import java.awt.print.PageFormat;
      import java.awt.print.Paper;

      import java.awt.event.MouseEvent;
      import java.awt.event.MouseListener;
      import java.awt.event.MouseMotionListener;

      import javax.swing.JComponent;
      import javax.swing.ToolTipManager;
      import javax.swing.JToolTip;


      public class DgmComponent extends JComponent implements Printable
          {

      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .


          /**
           * Start the printing programatically.
           */
          public void print(SomePrintInvokingChild child)
              {
              double width = (double) getWidth();
              double height = (double) getHeight();

              // Add room for the diagram title.
              // Font font = someObject.getFont();
              int fontHeight = 16; // font.getSize();
              height += 3 * fontHeight;

              Paper paper = new Paper();
              paper.setSize(width, height);
              paper.setImageableArea(0.0, 0.0, width, height);

              PageFormat pf = new PageFormat();

              pf.setPaper(paper);

              PrinterJob pj = PrinterJob.getPrinterJob();
              String jobName = "The Title ..."; // someObject.getTitle();
              if (jobName != null)
                  {
                  pj.setJobName(jobName);
                  }

              pj.setPrintable(this, pf);

              if (pj.printDialog())
                  {
                  try
                      {
                      pj.print();
                      }
                  catch(Exception e)
                      {
                      }
                  }
              }

          /**
           * Printable.print():
           */
          public int print(Graphics g, PageFormat pageFormat, int pageIndex)
              {
              // Page index 0 corresponds to page 1.
              if (pageIndex > 0)
                  {
                  return(NO_SUCH_PAGE);
                  }

              Graphics2D g2 = (Graphics2D) g;
              g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());

              // Font font = someObject.getFont();
              int fontHeight = 16; // font.getSize();

              String title = "The Title ..."; // someObject.getTitle();
              if (title != null)
                  {
                  g2.setColor(Color.black);
                  g2.drawString(title , 0, fontHeight);
                  }

              g2.translate(0, 3 * fontHeight);

              // .
              // .
              // .
              // .
              // .

              // Similar to paint code in some other object:
      g2.setPaint(Color.white);
      g2.fillRect(0, 0, 400, 400);
      g2.setPaint(Color.black);
      g2.drawRect(0, 0, 400, 400);
              
      g2.setPaint(Color.white);
      g2.fillRect(200, 200, 100, 100);
      g2.setPaint(Color.black);
      g2.drawRect(200, 200, 100, 100);


      // With the following image code commented out, the print time is
      // less than 15 seconds. With it enabled, the print time is fifteen
      // minutes.
              Image image = // This is where I load the .gif image: someObject.getImage();
              if (image != null)
                  {
                  // I usually give it a valid ImageObserver but null yields
                  // the same result for this test.
                  //
                  // g2.drawImage(image, 220, 220, someObject.imageLoader);
                  g2.drawImage(image, 220, 220, null);
                  }
              

              // .
              // .
              // .
              // .
              // .
              // .
              // .



              return(PAGE_EXISTS);
              }



      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .
      // .

          }

      3. Errors messages: none

      4. Trace information: printing the graphics context on multiple calls to print():

      ---------------------------------------
      WITHOUT IMAGE:

      DgmComponent.print():
           sun.java2d.PeekGraphics[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=255
          ,g=255,b=255]]
      DgmComponent.print():
           sun.awt.windows.WPathGraphics[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=255
          ,g=255,b=255]]

      ---------------------------------------
      WITH IMAGE:

      DgmComponent.print():
           sun.java2d.PeekGraphics[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=255
          ,g=255,b=255]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color [r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]
      DgmComponent.print():
           sun.java2d.ProxyGraphics2D[font=java.awt.Font[family=dialog
          ,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0
          ,b=0]]

      5. Additional configuration information:

      JDK 1.2 final,

            mpeircesunw Michael Peirce (Inactive)
            dblairsunw Dave Blair (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: