Zum Inhalt springen

Seitenränder bei Java Druck einstellen


Empfohlene Beiträge

Geschrieben

Hallo,

ich bins mal wieder. Ich hab ein Frame, das ausgedruckt wird (sämtliche Buttons werden ausgeblendet). Allerdings sind die Seitenränder zu breit. Ich würde gern wissen, ob man diese einstellen kann, bevor der PrintDialog geöffnet wird.


PrinterJob pj = PrinterJob.getPrinterJob();


if ( pj != null ) {

	HashPrintRequestAttributeSet atr = new HashPrintRequestAttributeSet();

	if(pj.printDialog(atr))

	{

		boolean oldVisibleKommen = btn_kommen.isVisible();

		boolean oldVisibleGehen = btn_gehen.isVisible();

		boolean oldVisibleSpeichern = btn_speichern.isVisible();

		boolean oldVisibleDrucken = btn_drucken.isVisible();

		boolean oldVisibleBeenden = btn_beenden.isVisible();


		btn_kommen.setVisible(false);

		btn_gehen.setVisible(false);

		btn_speichern.setVisible(false);

		btn_drucken.setVisible(false);

		btn_beenden.setVisible(false);

		try {

			pj.setPrintable(new Printable(){

			public int print(Graphics g, PageFormat pf, int page) throws PrinterException {

				if(page == 0)

				{

					Graphics2D g2 = (Graphics2D)g;

					g2.translate(pf.getImageableX(), pf.getImageableY());

					g2.transform(AffineTransform.getScaleInstance(0.75, 0.75));

						Hauptfenster.this.printComponents(g2);

									return Printable.PAGE_EXISTS;

				}

				return Printable.NO_SUCH_PAGE;

			}


		});

		pj.print(atr);

	} catch (PrinterException e1) {

		e1.printStackTrace();

	}

	btn_kommen.setVisible(oldVisibleKommen);

	btn_gehen.setVisible(oldVisibleGehen);

	btn_speichern.setVisible(oldVisibleSpeichern);

	btn_drucken.setVisible(oldVisibleDrucken);

	btn_beenden.setVisible(oldVisibleBeenden);

}

}

Hoffe ihr könnt mir weiterhelfen, mal wieder :rolleyes:

MFG

Natriumarm

PS: Sry für den etwas zerstörten aufbau des Quelltextes...der ist beim kopieren in den Post etwas durcheinander geraten.

Geschrieben

So, nach ein wenig googlen, stöbern hier im Forum und lesen des englischen Tutorials zur Print Service API von Sun dürfte ich ne Lösung für dein Problem haben.

Bevor du den PrintDialog aufruft erzeugst du ja ein HashPrintRequestAttributeSet. Nachdem du dieses erzeugt hast, musst du diesem einfach ein Objekt des Types MediaPrintableArea hinzufügen.

In deinem Fall müsste das dann so aussehen:


[...]

HashPrintRequestAttributeSet atr = new HashPrintRequestAttributeSet();

[B]atr.add(new MediaPrintableArea(10,10,190,277,MediaPrintableArea.MM));[/B]

if(pj.printDialog(atr))

[...]

in diesem fall hat er dann Seitenränder von 10 mm an allen Seiten festgelegt. Dabei geben die ersten beiden Parameter des Konstruktors die x und y Koordinate, und die beiden Parameter danach die Breite und Höhe des druckbaren Bereiches an. Der letzte Parameter gibt an wie die vorherigen Parameter zu interpretieren sind. In diesem Fall Millimeter, möglich wäre auch noch Inch.

Ich hoffe ich konnte dir damit helfen.

Mit freundlichen Grüßen

Dragon

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...