PDF formatieren

Kai16

Mitglied
Hallo Java-Forum

Ich bin gerade dran, ein Text-File einzulesen, dass meherere (nicht immer dieselbe Anzahl) Linien hat. Nun will ich diese Zeilenweise lesen, den String bearbeiten und in ein PDF einfügen.

Das mit dem einfügen ist eigentlich kein Problem. Jedoch schaffe ich es nicht die Strings richtig zu bearbeiten.

Hier mal das Textfile:
Code:
0020120002721100327893100000000000158150000012000ZY5817000212080612080612080665810080601208060000000                          
0020120002721100327893100000000000152700001460160ZY6034000212080712080712080765830080701208070000000                          
0020120002721100327893100000000000161080001105650ZY4393000212080812080812080865850080801208080000000                          
0020120002721100327893100000000000158780000486000ZY2961000212080812080912080965860080801208080000000                          
0020120002721100327893100000000000158830000314700ZY2963000212080812080912080965860080801208080000000                          
0020120002721100327893100000000000159590000056160ZY6923000212081012081012081065870081001208100000000                          
999012000272110032789319999999999999999000003434670000000000006120810000000000000000000

Im PDF sollte es dann etwa so aussehen (die erste Zeile):

Code:
120.00		11 00327 89310 00000 00000 1581 5		08.06.12		08.06.120

Wie krieg ich das hin?

Vielen vielen Dank für die Hilfe!

Freundliche Grüsse

Kai
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Da musst du dir einen Parser zusammenbasteln der dir das richtig formatiert.

[EDIT]Also was man jetzt als Hilfestellung geben kann: mit substring, parseInt, parseDouble, evtl. line.length() arbeiten[/EDIT]
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Also Vorgehen:

- Zeile auslesen
- Abschnitte zerlegen und in Variable speichern(auch schon richtige Typen parsen)
- In richtiger Reihenfolge ausgeben

Wenn du es soweit mal hast, dann können wir dir weiterhelfen.
 

Kai16

Mitglied
Das habe ich bis jetzt:

Java:
	private static void createPdf(BufferedReader bufferedReader)
			throws IOException, DocumentException {

		String betrag = bufferedReader.readLine();
		String refNr = bufferedReader.readLine();

		Document document = new Document();

		PdfWriter writer = PdfWriter.getInstance(document,
				new FileOutputStream(pfadPDF));
		document.open();

		PdfContentByte cb = writer.getDirectContent();
		BaseFont baseFont = BaseFont.createFont();

		cb.beginText();
		cb.setFontAndSize(baseFont, 13);
		cb.moveText(40, 800);
		cb.showText(titel);
		cb.setFontAndSize(baseFont, 10);
		cb.moveText(0, -40);
		spacingErstellen(cb);
		cb.newlineShowText(textBetrag);
		cb.moveText(0, -25);
		while (betrag != null) {
			betrag = betrag.substring(39, 49);
			cb.newlineShowText(betrag);
			betrag = bufferedReader.readLine();
			cb.moveText(0, -25);
			spacingErstellen(cb);
		}
		cb.moveText(130, 175);
		spacingErstellen(cb);
		cb.newlineShowText(textReferenznummer);
		cb.moveText(0, -25);
		while (refNr != null) {
			refNr = refNr.substring(12, 39);
			cb.newlineShowText(refNr);
			refNr = bufferedReader.readLine();
			cb.moveText(0, -25);
			spacingErstellen(cb);
		}

		cb.moveText(220, 0);
		spacingErstellen(cb);
		cb.newlineShowText(textBuchung);
		cb.moveText(90, 0);
		spacingErstellen(cb);
		cb.newlineShowText(textValuta);
		cb.moveText(-400, -25);
		spacingErstellen(cb);

		cb.endText();

		document.close();
	}
 
S

SlaterB

Gast
und, alles fertig, oder Fragen?

grundlegender Tipp: trenne die Aufgaben,
wenn es nicht an GB an Daten scheitert, dann schreibe erst eine Methode, die alles aus dem BufferedReader in eine String-Liste oder so speichert,
für sich ausgeben, testen usw.,

danach eine PDF-Methode, erst mit zwei Dummy-Zeilen testen usw., dann mit dan Daten aus der anderen Methode aufrufen
 

Kai16

Mitglied
und, alles fertig, oder Fragen?

grundlegender Tipp: trenne die Aufgaben,
wenn es nicht an GB an Daten scheitert, dann schreibe erst eine Methode, die alles aus dem BufferedReader in eine String-Liste oder so speichert,
für sich ausgeben, testen usw.,

danach eine PDF-Methode, erst mit zwei Dummy-Zeilen testen usw., dann mit dan Daten aus der anderen Methode aufrufen


Nein, ist leider nicht fertig... Ich kriege das im PDF nicht hin...
und ich weiss nicht, wie ich die Zeilen formatieren kann...
 
S

SlaterB

Gast
also mit Text einlesen usw. hat es nichts mehr zu tun, gut zu wissen, Thementitel geändert

wie man iText moveText() usw. irgendwelche Layouts hinbekommt ist allerdings eine sehr spezielle Frage,
du kannst hoffen dass du hier auf jemanden triffst der dazu die Detailbefehle kennt, sonst bisschen ausprobieren,
im Internet suchen, iText-Forum?

aus Java Basics-Bereich schon vorher zu verschieben, hole ich jetzt auch noch nach
 

Kai16

Mitglied
also mit Text einlesen usw. hat es nichts mehr zu tun, gut zu wissen, Thementitel geändert

wie man iText moveText() usw. irgendwelche Layouts hinbekommt ist allerdings eine sehr spezielle Frage,
du kannst hoffen dass du hier auf jemanden triffst der dazu die Detailbefehle kennt, sonst bisschen ausprobieren,
im Internet suchen, iText-Forum?

aus Java Basics-Bereich schon vorher zu verschieben, hole ich jetzt auch noch nach

vielen Dank fürs verschieben :)

wie würdest du das einlesen machen?
ich habe ja betrag, refNr, valuta und buchung die ich weiterverarbeiten will.
 
S

SlaterB

Gast
mach es dir so einfach oder so komfortabel wie nötig/ möglich,
du kannst komplette Zeilen in eine String-Liste lesen, die zu durchlaufen ist dann quasi genauso wie bufferedReader.readLine(),
nur dass du eben einen sicheren überpüfbaren Parameter hast und nicht mehr meckern kannst das Zeilen nicht gefunden werden usw.,

du kannst auch beim Einlesen die Zeilen gleich splitten, jede Zeile ist für sich ein String-Array/Liste bzw. in Höchstform ein Objekt einer eigenen Klasse mit Variablen für betrag usw.

wie ich gerade an deinem Code sehe rufst du erst für betrag readLine() auf, dann für refNr nochmal?
das sieht natürlich ungünstig aus, die stehen doch sicher in derselben Zeile?

also unbedingt für sich üben, ohne PDF alle Zeilen einlesen, jede Zeile splitten oder was auch immer,
wenn du die Zeilen sammelst ist es zumindest nicht unmöglich, die Liste aller Zeilen mehrfach zu durchlaufen,
 
S

SlaterB

Gast
das Beispiel ergibt sich von selber, bisschen arbeiten musst du schon,

zwei Kernaussagen, die nun entweder zu verstehen sind oder alles hat keinen Zweck:
- du kannst mit einem BufferedReader nicht (gut) alle Zeilen mehrfach durchgehen
- lies alle Zeilen in eine Liste, generell empfehlenswert, hier kannst du dann sogar alle Zeilen gut mehrfach durchgehen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
The Pi Android TextView richtig formatieren Allgemeine Java-Themen 1
AssELAss String mit mehreren Zahlungsbeträgen formatieren Allgemeine Java-Themen 10
B Barcode4j Ausgabe Formatieren Allgemeine Java-Themen 3
turtle Zeitdauer formatieren Allgemeine Java-Themen 8
D HTTP URI für FireFox lesbar formatieren?!? Allgemeine Java-Themen 2
S log4j, Datum in Fileappendern formatieren Allgemeine Java-Themen 4
trash mehrzeilige .txt einlesen/formatieren Allgemeine Java-Themen 8
E JTextArea / JEditorPane + Text formatieren Allgemeine Java-Themen 3
G Excel Werte / Zellen formatieren Allgemeine Java-Themen 5
W Ausgabe von Fließkommazahlen formatieren Allgemeine Java-Themen 2
F Formatieren von Zellen in Excel mit Java POI Allgemeine Java-Themen 5
MQue Float- Wert formatieren Allgemeine Java-Themen 8
N BigDecimal formatieren Allgemeine Java-Themen 2
P XML Datei formatieren Allgemeine Java-Themen 8
C Konsolenausgabe formatieren Allgemeine Java-Themen 5
M Ausgabe in Console formatieren`? Allgemeine Java-Themen 12
K Date formatieren Allgemeine Java-Themen 7
G Systemzeit formatieren Allgemeine Java-Themen 9
C Java Applikation - Schrift . (formatieren, effekte) Allgemeine Java-Themen 4
B Datum formatieren Allgemeine Java-Themen 2
meez Code formatieren Allgemeine Java-Themen 8
B Formatieren von text in ner TextArea Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben