私のJavaアプリケーションから領収書プリンタへ印刷しようとしています 領収書の幅は58mmです。余白が正しくなく、余白が1インチで印刷されているようですいずれかの側。この結果、3行の文字/数字が印刷され、フルラインは印刷されません。 私は手動でマージンを両面で1.97mmに調整しているので、メモ帳から正常に印刷できます。Java:印刷可能な幅を設定する(Pageformat)
私のコードは以下の通りです。
public int print(Graphics g, PageFormat pf, int pageIndex)
throws PrinterException {
Font font = new Font("MONOSPACED", Font.PLAIN, 10);
FontMetrics metrics = g.getFontMetrics(font);
int lineHeight = metrics.getHeight();
if (pageBreaks == null) {
initTextLines();
int linesPerPage = (int)(pf.getImageableHeight()/lineHeight);
int numBreaks = (textLines.length-1)/linesPerPage;
pageBreaks = new int[numBreaks];
for (int b=0; b<numBreaks; b++) {
pageBreaks[b] = (b+1)*linesPerPage;
}
}
if (pageIndex > pageBreaks.length) {
return NO_SUCH_PAGE;
}
/* User (0,0) is typically outside the imageable area, so we must
* translate by the X and Y values in the PageFormat to avoid clipping
* Since we are drawing text we
*/
Graphics2D g2d = (Graphics2D)g;
g2d.setFont(new Font("MONOSPACED", Font.PLAIN, 10));
g2d.translate(pf.getImageableX(), pf.getImageableY());
/* Draw each line that is on this page.
* Increment 'y' position by lineHeight for each line.
*/
int y = 0;
int start = (pageIndex == 0) ? 0 : pageBreaks[pageIndex-1];
int end = (pageIndex == pageBreaks.length)
? textLines.length : pageBreaks[pageIndex];
for (int line=start; line<end; line++) {
y += lineHeight;
g.drawString(textLines[line], 0, y);
}
/* tell the caller that this page is part of the printed document */
return PAGE_EXISTS;
}
それは私がするソートされている場合、あなたはそれが出て他のシステムと均一に保つために、私は領収書の右側にテキストを揃える助けることができれば、私も感謝される、しかし、私の主な問題は余裕です月を超えてください:)
ありがとうございます!
p.s.私はJavaから印刷することに新しいし、苦労して、オンラインソースをコピーすることから重複したコードを持つ可能性があります。私はそれが小さく、それほど役に立たなかったようにフォントを調整しました。