मुझे पूरा यकीन नहीं है कि मैं g.drawString को समझता हूं।एक भौतिक रूप से प्रिंट करना - मूल समझ की आवश्यकता है
मेरे पास एक प्रोग्राम है जो प्रीप्रिंट किए गए फॉर्म को लिखता है। उपयोगकर्ता दावा करते हैं कि प्रिंटिंग अनियमित है ... यानी, फॉर्म पर पाठ पिछले प्रिंट की तुलना में अधिक/कम है। निजी तौर पर, मुझे लगता है कि वे फॉर्म को गलत तरीके से लोड कर रहे हैं, लेकिन चूंकि वे मुझे कोड लिखने के लिए भुगतान करते हैं, इसलिए मैं फॉर्म को माप रहा हूं और आयामों को पिक्सल में परिवर्तित कर रहा हूं और प्रिंटिंग से संबंधित हिस्से को फिर से लिख रहा हूं।
फ़ॉर्म को सही तरीके से मुद्रित करने के लिए, c.getCostAmount() को इसके नीचे एक पंक्ति दिखाई देने के लिए एक पिक्सेल ऊपर c.getAppraisersAmount() मुद्रित करना होगा। फिर भी, प्रत्येक सफल रेखा उस से 4 मिमी (या लगभग 15 पिक्सेल) है।
मेरी समस्या यह है कि मुझे ऊर्ध्वाधर दूरी समझ में नहीं आता है और क्यों तीसरी पंक्ति को पिछली पंक्ति के ऊपर एक पिक्सेल रखा जाना चाहिए जिसके लिए नीचे होना चाहिए।
किसी के पास त्वरित-एन-आसान स्पष्टीकरण या ट्यूटोरियल/स्पष्टीकरण का लिंक है?
बहुत धन्यवाद!
कोड (ज/टी एलेक्स, Java: Printing program output to a physical printer):
public int print(Graphics g, PageFormat pf, int page, Check c){
final double MILLIMETER_IN_PIXELS = 3.779527559;
DecimalFormat df = new DecimalFormat("$#.00");
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D) g;
int x = (int) pf.getImageableX();
int y = (int) pf.getImageableY();
g2d.translate(x, y + .5);
Font font = new Font("Courier New", Font.PLAIN, 10);
g2d.setFont(font);
FontMetrics metrics = g.getFontMetrics(font);
g.drawString("CHECK #" + c.getCheckNumber(), ((int) MILLIMETER_IN_PIXELS* 55),((int) MILLIMETER_IN_PIXELS*15));
int strWidth = SwingUtilities.computeStringWidth(metrics, df.format(c.getAppraisersAmount()));
g.drawString(df.format(c.getAppraisersAmount()), ((int) ((MILLIMETER_IN_PIXELS*62)-strWidth)), ((int) MILLIMETER_IN_PIXELS*23));
Date d = c.getJavaDate();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
g.drawString(sdf.format(d), ((int) MILLIMETER_IN_PIXELS*90), ((int) MILLIMETER_IN_PIXELS*24));
strWidth = SwingUtilities.computeStringWidth(metrics, df.format(c.getCostAmount()));
g.drawString(df.format(c.getCostAmount()), ((int) ((MILLIMETER_IN_PIXELS*62)-strWidth)), ((int) (MILLIMETER_IN_PIXELS*22)));
strWidth = SwingUtilities.computeStringWidth(metrics, df.format(c.getRefundsAmount()));
g.drawString(df.format(c.getRefundsAmount()), ((int) ((MILLIMETER_IN_PIXELS*62)-strWidth)), ((int) (MILLIMETER_IN_PIXELS*26)));
strWidth = SwingUtilities.computeStringWidth(metrics, df.format(c.getOfficersAmount()));
g.drawString(df.format(c.getOfficersAmount()), ((int) ((MILLIMETER_IN_PIXELS*62)-strWidth)), ((int) (MILLIMETER_IN_PIXELS*30)));
Double totalLeft = c.getAppraisersAmount() + c.getCostAmount() + c.getRefundsAmount() + c.getOfficersAmount();
strWidth = SwingUtilities.computeStringWidth(metrics, df.format(totalLeft));
g.drawString(df.format(totalLeft), ((int) ((MILLIMETER_IN_PIXELS*62)-strWidth)), ((int) (MILLIMETER_IN_PIXELS*44)));
return PAGE_EXISTS;
}
व्यक्तिगत रूप से, मुझे नहीं पता, लेकिन मुझे यह जानने में दिलचस्पी है कि जवाब क्या है! मुझसे स्टार और आप को जयकार! – DreadHeadedDeveloper