Hallo,
ich hab ein Problem beim Drucken und zwar:
Ich drucke auf einen Etikettendrucker und mußt deshalb ein eigenes Seitenformat erzeugen.
Dazu erzeugte ich eine Seite(7,5*9cm) und lege den druckbaren Bereich fest.
Somit müßte ich den Rand definiert haben.
Gedruckt wird aber ein Rand von ca. 1 Zoll (links und oben) :shock:
Ich hab schon diverse Sachen versucht, aber nichts will so richtig funktionieren.
Der Ausdruck sieht dann so aus, dass das Dokument richtig positioniert wird, aber da wo der Rand ist wird nix gedruckt.
Wenn ich also beispielsweise ein schwarzes Rechteck drucke, das genau so groß ist wie der druckbare Bereich, dann wird es an der richtigen Stelle gedruckt. Nur fehlt dann halt links und oben ein Stück davon.
Der Drucker kann übrigens bist zum Rand drucken.
Ich habe eine Klasse für mein Dokument.
Gedruckt wird etwa so:
Hat jemand eine Ahnung, warum ich immer diesen Rand bekomme?
Vielen Dank schonmal.
Malkav
ich hab ein Problem beim Drucken und zwar:
Ich drucke auf einen Etikettendrucker und mußt deshalb ein eigenes Seitenformat erzeugen.
Dazu erzeugte ich eine Seite(7,5*9cm) und lege den druckbaren Bereich fest.
Somit müßte ich den Rand definiert haben.
Gedruckt wird aber ein Rand von ca. 1 Zoll (links und oben) :shock:
Ich hab schon diverse Sachen versucht, aber nichts will so richtig funktionieren.
Der Ausdruck sieht dann so aus, dass das Dokument richtig positioniert wird, aber da wo der Rand ist wird nix gedruckt.
Wenn ich also beispielsweise ein schwarzes Rechteck drucke, das genau so groß ist wie der druckbare Bereich, dann wird es an der richtigen Stelle gedruckt. Nur fehlt dann halt links und oben ein Stück davon.
Der Drucker kann übrigens bist zum Rand drucken.
Ich habe eine Klasse für mein Dokument.
Code:
public class TicketPrintableObject extends Frame implements Printable
{
public int iResMul = 2;
...
...
public int print( Graphics g, PageFormat pf, int iPage )
throws PrinterException
{
final int FONTSIZE = 13;
if( 0 != iPage )
return NO_SUCH_PAGE;
Paper pico = new Paper();
pico.setSize(212.0,425.0); //15*75mm in Points
pico.setImageableArea(1.0,1.0,211.0,424.0); //druckbare Bereich festlegen
pf.setPaper(pico);
pf.setOrientation(PageFormat.LANDSCAPE);
try {
int iPosX = 1;
int iPosY = 1;
int iAddY = FONTSIZE * 3/2 * iResMul;
Graphics2D g2 = (Graphics2D)g;
PrinterJob prjob = ((PrinterGraphics)g2).getPrinterJob();
g2.translate( pf.getImageableX(), pf.getImageableY() ); // Koerdinaten auf den druckbaren Bereich legen
g2.scale( 1.0 / iResMul, 1.0 / iResMul );
g2.setFont( new Font( "SansSerif", Font.PLAIN, FONTSIZE * iResMul ) );
g2.setColor( Color.black );
g2.drawRect( iPosX, iPosY, 842, 392 ); // Rechteck 842*392 Pixel
iPosX += iAddY;
iPosY += iAddY / 2;
...
...
g2.setFont( new Font( "SansSerif", Font.BOLD, FONTSIZE * iResMul ) );
g2.drawString( "irgendein String" ,iPosX+300, iPosY+=iAddY );
} catch( Exception ex ) {
throw new PrinterException( ex.getMessage() );
}
return PAGE_EXISTS;
}
}
Gedruckt wird etwa so:
Code:
...
DocPrintJob job = printServices[0].createPrintJob();
...
TicketPrintableObject ticket = new TicketPrintableObject();
Doc doc = new SimpleDoc( ticket, flavor, null);
job.print(doc, null);
Hat jemand eine Ahnung, warum ich immer diesen Rand bekomme?
Vielen Dank schonmal.
Malkav