Mehrseitiges Drucken

Status
Nicht offen für weitere Antworten.

Oli

Top Contributor
Hallo,

ist es denn wirklich so schwer, mit Java mehseitig zu drucken???

Gibts irgendwo nen Codeschnipsel, der aufzeigt, wie man mehrseitig druckt? Ne Arraylist mit beliebig vielen Zeilen auf mehrere Seiten Papier zu bringen, kann doch nicht so schwer sein?

Grüße Oli
 

Oli

Top Contributor
Hm. Wie ich ja schon in mehreren Threads beschrieben habe, komme ich ja aus der C# - Ecke. Da ist das halt ein Zweizeiler.

Gibt es wirklich nirgends nen Codeschnipsel? Es kann doch nicht sein, dass ich der einzige mit diesem Problem bin?

Grüße Oli
 

Oli

Top Contributor
Hier mal ein Beispielcode:

Java:
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.ArrayList;

import javax.swing.JOptionPane;

public class DruckerTest {

	private ArrayList<String> inhalt;
	private PrinterJob pjob;
	private int counter = 0;

	public static void main(String[] args) {
		new DruckerTest();
	}

	public DruckerTest() {
		inhalt = new ArrayList<String>();
		for (int i = 0; i < 200; i++) {
			String test = "Zeile: " + i;
			inhalt.add(test);
		}
		System.out.println("inhalt" + inhalt.size());
		try {
			counter = 0;
			getPrinter();
		}
		catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Keine Verbindung zum Drucker", "Fehler", JOptionPane.ERROR_MESSAGE);
		}
	}

	private void getPrinter() throws PrinterException {

		pjob = PrinterJob.getPrinterJob();

		Paper a4Paper = new Paper();
		PageFormat pf = new PageFormat();

		double paperWidth = 8.26;
		double paperHeight = 11.69;
		double leftMargin = 0.30;
		double rightMargin = 0.30;
		double topMargin = 0.30;
		double bottomMargin = 0.30;

		a4Paper.setSize(paperWidth * 72.0, paperHeight * 72.0);
		a4Paper.setImageableArea(leftMargin * 72.0, topMargin * 72.0, (paperWidth - leftMargin - rightMargin) * 72.0,
				(paperHeight - topMargin - bottomMargin) * 72.0);
		pf.setPaper(a4Paper);

		Book book = new Book();
		book.append(new TextPrintable(), pf);

		pjob.setPageable(book);

		if (pjob.printDialog()) {
			try {
				pjob.print();
			}
			catch (Exception PrintException) {
				PrintException.printStackTrace();
			}
		}
		else {
			System.out.println("Printing aborted...");
		}
	}

	class TextPrintable implements Printable {

		Font headerfont = new Font("Times", Font.BOLD, 20);
		Font textfont = new Font("Times", Font.PLAIN, 12);

		public int print(Graphics g, PageFormat pageFormat, int pageIndex) {

			int x = 0;
			int y = (int) pjob.defaultPage().getImageableY();

			String text = "Test für mehrseitigen Druck";
			g.setFont(headerfont);

			FontMetrics fm = g.getFontMetrics();
			int laenge = fm.stringWidth(text);
			int hoehe = fm.getHeight();

			x += (((int) pjob.defaultPage().getWidth() - laenge) / 2);
			g.drawString(text, x, y);

			x = (int) pjob.defaultPage().getImageableX();
			y += hoehe + 15;

			for (int i = counter; i < inhalt.size(); i++) {

				x = (int) pjob.defaultPage().getImageableX();

				g.setFont(textfont);

				g.drawString(inhalt.get(i), x, y);
				y += fm.getHeight() / 2;
				counter++;
				if (y > pjob.defaultPage().getImageableHeight()) {
					System.out.println("break");
					break;
				}
			}
			return Printable.PAGE_EXISTS;
		}
	}
}

Was mach ich denn falsch??

Grüße Oli
 

Oli

Top Contributor
Hallo nochmal,

für alle die ein ähnliches Problem haben: Hier mal eine Alternative. Es werden maximal 40 Zeilen aus dem Array auf das Blatt Papier gedruckt.
Das ist zwar nicht schön, aber immerhin werden mehere Seiten gedruckt.

Vielleicht kann man sich ja vorher berechnen, wie viele Zeilen aufgrund der Schriftgröße aufs Papier passen.

Aber eins muss ich noch loswerden: JAVA SUCKS!!!!

Grüße

Java:
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.ArrayList;

import javax.swing.JOptionPane;

public class DruckerTest {

	private ArrayList<String> inhalt;
	private PrinterJob pjob;

	private Font headerfont = new Font("Times", Font.BOLD, 20);
	private Font textfont = new Font("Times", Font.PLAIN, 12);

	private int counter = 0;

	
	public static void main(String[] args) {
		new DruckerTest();
	}

	public DruckerTest() {
		inhalt = new ArrayList<String>();
		for (int i = 0; i < 200; i++) {
			String test = "Zeile: " + i;
			inhalt.add(test);
		}
		System.out.println("inhalt" + inhalt.size());
		try {
			getPrinter();
		}
		catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Keine Verbindung zum Drucker", "Fehler", JOptionPane.ERROR_MESSAGE);
		}
	}

	private void getPrinter() throws PrinterException {

		pjob = PrinterJob.getPrinterJob();

		Paper a4Paper = new Paper();
		PageFormat pf = new PageFormat();

		double paperWidth = 8.26;
		double paperHeight = 11.69;
		double leftMargin = 0.30;
		double rightMargin = 0.30;
		double topMargin = 0.30;
		double bottomMargin = 0.30;

		a4Paper.setSize(paperWidth * 72.0, paperHeight * 72.0);
		a4Paper.setImageableArea(leftMargin * 72.0, topMargin * 72.0, (paperWidth - leftMargin - rightMargin) * 72.0,
				(paperHeight - topMargin - bottomMargin) * 72.0);
		pf.setPaper(a4Paper);

		
		
		Book book = new Book();
		ArrayList<String> temp = new ArrayList<String>();
		for (int i = 0; i < inhalt.size(); i++) {
			if (i != 0 && i % 40 != 0 && i != inhalt.size() - 1) {
				temp.add(inhalt.get(i));
			}
			else if (i == 0) {
				temp.add(inhalt.get(i));
			}
			else if (i == inhalt.size() - 1) {
				temp.add(inhalt.get(i));
				counter = 0;
				book.append(new TextPrintable(temp), pf);
				temp = new ArrayList<String>();
			}
			else {
				counter = 0;
				book.append(new TextPrintable(temp), pf);
				temp = new ArrayList<String>();
			}
		}
		pjob.setPageable(book);

		if (pjob.printDialog()) {
			try {
				pjob.print();
			}
			catch (Exception PrintException) {
				PrintException.printStackTrace();
			}
		}
		else {
			System.out.println("Printing aborted...");
		}
	}
	class TextPrintable implements Printable {

		ArrayList<String> list;

		public TextPrintable(ArrayList<String> list) {
			this.list = list;
		}
		
		public int print(Graphics g, PageFormat pageFormat, int pageIndex) {

			int x = 0;
			int y = (int) pjob.defaultPage().getImageableY();

			String text = "Test für mehrseitigen Druck";
			g.setFont(headerfont);

			FontMetrics fm = g.getFontMetrics();
			int laenge = fm.stringWidth(text);
			int hoehe = fm.getHeight();

			x += (((int) pjob.defaultPage().getWidth() - laenge) / 2);
			g.drawString(text, x, y);

			x = (int) pjob.defaultPage().getImageableX();
			y += hoehe + 15;

			for (int i = 0; i < list.size(); i++) {

				x = (int) pjob.defaultPage().getImageableX();
				g.setFont(textfont);
				System.out.println(list.get(i));
				g.drawString(list.get(i), x, y);
				y += fm.getHeight() / 2;
				counter++;
				//				if (y > pjob.defaultPage().getImageableHeight()) {
				//					System.out.println("break");
				//					break;
				//				}
			}
			return Printable.PAGE_EXISTS;
		}
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Mehrseitiges Drucken Allgemeine Java-Themen 3
L iText: Mehrseitiges PDF erzeugen Allgemeine Java-Themen 9
OnDemand Drucken / Druckserver Allgemeine Java-Themen 13
M Drucken drawString(); Allgemeine Java-Themen 1
M Drucken ohne Dialog Allgemeine Java-Themen 1
M Drucken von Dateien Allgemeine Java-Themen 10
S Seitenausrichtung beim Drucken Allgemeine Java-Themen 1
T Drucken einer PDF Datei Allgemeine Java-Themen 4
S Input/Output Drucken Allgemeine Java-Themen 2
C Mehrere Seiten drucken in Hoch- und Querformat Allgemeine Java-Themen 0
T Drucken von JPanel Allgemeine Java-Themen 4
F Mehrere JTables' drucken Allgemeine Java-Themen 0
B JTextArea 6 mal auf DinA4 Format verteilen und drucken Allgemeine Java-Themen 1
Androbin Drucken in Java - Größen- und Positionsprobleme Allgemeine Java-Themen 3
E Drucken einer Pdf Datei unter Java. Allgemeine Java-Themen 1
M pdf File bzw. ausgefüllte pdf Formulare drucken Allgemeine Java-Themen 2
L Aktuell angezeigtes Drucken Allgemeine Java-Themen 8
Thallius Drucken mit Logo Allgemeine Java-Themen 2
Thallius Drucken mit Templates Allgemeine Java-Themen 3
S PDF-Generierung und Drucken Allgemeine Java-Themen 11
A Drucken auf theoretisch unendlich langer Seite Allgemeine Java-Themen 2
M Fehlende Zeichen beim Drucken mit PDFBox Allgemeine Java-Themen 10
B Text auf Standarddrucker drucken Allgemeine Java-Themen 3
B Drucken (Inhaltsverzeichnis usw.) Allgemeine Java-Themen 4
F Drucken von Escape-Sequenzen Allgemeine Java-Themen 11
H Drucken von Belegen (Belegdrucker: EPSON TM-T88III Allgemeine Java-Themen 2
W Input/Output Drucken ohne GUI Allgemeine Java-Themen 11
C PDF Dateien mit Java drucken Allgemeine Java-Themen 2
R PDF duplex drucken Allgemeine Java-Themen 3
A Drucken auf kleine Formate Allgemeine Java-Themen 2
sylo PageFormat - Das Problem mit dem Drucken Allgemeine Java-Themen 5
M Drucken hilfe Allgemeine Java-Themen 4
Y Drucken mit Java Allgemeine Java-Themen 2
M aus Datei drucken Allgemeine Java-Themen 5
M Problem beim Drucken von PDFs Allgemeine Java-Themen 3
T Drucken von variabel langen Listen (es kommen nur leere Seiten raus) Allgemeine Java-Themen 2
A Drucken ändert aktuelles Verzeichnis Allgemeine Java-Themen 2
S Drucken ohne Rand Allgemeine Java-Themen 3
A Drucken einer JList Allgemeine Java-Themen 3
D pdf mit iText drucken Allgemeine Java-Themen 4
K SWT OpenOffcie Dokument drucken Allgemeine Java-Themen 8
V Drucken von Listen Allgemeine Java-Themen 6
J xls Datei drucken mit Java Allgemeine Java-Themen 10
A HTML-Seite aufrufen, drucken und zum Programm zurückkehren Allgemeine Java-Themen 2
J Drucken mit drawString() und Zeilenumbruch Allgemeine Java-Themen 3
O Mehrere Exemplare(Kopieen) drucken Allgemeine Java-Themen 2
P JTable drucken Allgemeine Java-Themen 8
U Dokumente als PDF "drucken" Allgemeine Java-Themen 3
T Drucken mit PrintJob und Einstellungen merken Allgemeine Java-Themen 3
V Datei Drucken Allgemeine Java-Themen 19
D Inhalt der JTextArea drucken Allgemeine Java-Themen 2
S Problem beim Drucken auf Netzwerkdrucker unter Linux Allgemeine Java-Themen 9
R Drucken über bestimmten Drucker Allgemeine Java-Themen 11
V Probleme beim Drucken mehrerer PDF's Allgemeine Java-Themen 17
Zed Tool zum drucken von Sourcecode Allgemeine Java-Themen 9
G diagramm drucken Allgemeine Java-Themen 3
J Drucken über Java oder OOo empfehlenswert? Allgemeine Java-Themen 15
W Drucken in Graustufen Allgemeine Java-Themen 4
F Frage zum Drucken Allgemeine Java-Themen 4
G Drucken einer GUI-Komponenter ? Allgemeine Java-Themen 4
Lazybone iText und Drucken Allgemeine Java-Themen 5
G Drucken mit Laserdrucker Allgemeine Java-Themen 5
Lazybone Rechnung erstellen und Drucken Allgemeine Java-Themen 19
G Drucken in Java Allgemeine Java-Themen 3
M Drucken Allgemeine Java-Themen 2
M Drucken Schacht auswählen/bestimmen Allgemeine Java-Themen 2
P Drucken Allgemeine Java-Themen 9
T OO zum drucken/convertieren ohne Socket Allgemeine Java-Themen 8
M Drucken mit BufferedImage Allgemeine Java-Themen 9
S hilfe für drucken Allgemeine Java-Themen 4
B Drucken - welche Bibliothek favorisiert Ihr? Allgemeine Java-Themen 16
D Masken drucken Allgemeine Java-Themen 13
C von Java aus ein Dokument im Browser drucken Allgemeine Java-Themen 11
L Per IText erstelltes PDF automatisch drucken Allgemeine Java-Themen 13
G Drucken Allgemeine Java-Themen 9
L Rechnungen in Java erstellen & drucken Allgemeine Java-Themen 23
G iText: Problem beim Drucken von AcroFormen Allgemeine Java-Themen 2
André Uhres Drucken: Printer is not accepting job Allgemeine Java-Themen 3
F PostScript mit Java "drucken" Allgemeine Java-Themen 12
G Das aktuelle Fenster drucken Allgemeine Java-Themen 13
T PDF drucken: "invalid flavor" Allgemeine Java-Themen 8
R Rechnung aus Java heraus erstellen und drucken Allgemeine Java-Themen 8
T Drucken von RTF-Dokumenten? Allgemeine Java-Themen 11
H Drucken unter Linux funktioniert nicht Allgemeine Java-Themen 2
A Nochmals Drucken Allgemeine Java-Themen 2
N Drucken+Papiergröße Allgemeine Java-Themen 9
B Daten zum Drucken aufbereiten Allgemeine Java-Themen 8
S Text optimal drucken Allgemeine Java-Themen 2
G drucken von html-code Allgemeine Java-Themen 2
S drucken unter j2sdk-1.4 möglich; unter jdk1.5 nicht; warum? Allgemeine Java-Themen 4
M Problem mit PageFormat beim Drucken Allgemeine Java-Themen 2
S Drucken!er druckt es zu groß aus! Allgemeine Java-Themen 5
S Drucken! Allgemeine Java-Themen 2
A Prof. Lib fürs Drucken Allgemeine Java-Themen 5
J Eine Rechnung speichern vom Drucken Allgemeine Java-Themen 3
J vorm Drucken speichern Allgemeine Java-Themen 3
J Drucken mit Java Allgemeine Java-Themen 2
S Drucken: Seite x von y ? Allgemeine Java-Themen 2
W Ablaufanzeige beim Drucken mit printerJob Allgemeine Java-Themen 3
T Drucken von Daten in einen DIN A5 Vordruck Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben