BUG: PrintJob Output is Incorrect After First PageLast reviewed: March 17, 1998Article ID: Q182623 |
The information in this article applies to:
SYMPTOMSWhen printing text or graphics from Java using java.awt.PrintJob, the output has different font sizes, line thickness', and other Graphics attributes on different pages even when the same Graphic attributes and fonts are used on all pages. Also, subsequent pages do not reset the offset from a previous translate() call. For example, if your paint() routine calls gr.translate(10,10), then the first page printed starts at origin (10,10), the second page starts at origin (20,20) and so on.
CAUSEThis problem happens with some printer drivers depending on whether the driver resets state between pages.
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATION
Steps to Reproduce the Font and Graphic Attribute IssueCreate a Java Application and include the following class:
import java.awt.*; import com.ms.ui.*; public class PrintFont extends UIFrame { public PrintFont() { PrintJob pj = getToolkit().getPrintJob(null, "Printer", null); if (pj != null) { for (int i=1; i<=3; i++) { Graphics pg = pj.getGraphics(); if (pg != null) { pg.setFont(new Font("TimesRoman", Font.PLAIN, 16)); pg.setColor(Color.black); pg.drawRect(100, 100, 100, 100); pg.drawString("Page " + i, 600, 900); pg.drawString("TimesRoman", 500, 900); } System.out.println("Dispose"); pg.dispose(); } pj.end(); System.out.println("End"); } } public static void main(String args[]) { UIFrame f = new PrintFont(); System.exit(0); } }A workaround for this problem is to select a different attribute (font/color) and do a drawString of an empty string, then select back in the desired attribute. A workaround for the translation accumulation issue is to get your current translation and set the translation to the inverted values:
try { com.ms.awt.GraphicsX gx = (com.ms.awt.GraphicsX) printGraphics; Point pt = gx.getTranslation(); gx.translate(-pt.x, -pt.y); } catch (Exception e) { } |
Additional query words: print font
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |