iText PDF-Generierung ohne Speichern

lieschen89

Aktives Mitglied
Hi,

ich möchte mittels iText PDFs generieren, die aber nirgends gespeichert, sondern nur angezeigt werden.
Wie das für Webanwendungen geht habe ich schon gefunden:
java - Creating a PDF using iText without saving it to a temp file - Stack Overflow
Aber ich habe eine normale Desktop-Anwendung mit Swing.

Weiß jemand ob das geht?

Also das hier, nur ohne Pfad:
Java:
PdfWriter.getInstance(document, new FileOutputStream(SPEICHER_PFAD));
 

rme

Top Contributor
Hallo,

das geht genau wie in der Lösung, die in dem verlinkten Beitrag erwähnt wurde: Da getInstance anscheinend als zweiten Parameter einen OutputStream erwartet, kannst du auch einen ByteArrayOutputstream nehmen. Dann hast du die PDF-Datei danach in einem byte-Array und brauchst nur noch eine Komponente, die eine PDF aus einem byte-Array oder einem InputStream heraus anzeigen kann :)
 
Zuletzt bearbeitet:

rme

Top Contributor
Als erstes brauchst du einen ByteArrayOutputStream, um die PDF-Daten darin zu speichern:
Java:
        ByteArrayOutputStream pdfByteStream = new ByteArrayOutputStream();

Mit diesem kannst du dann iText initialisieren:

Java:
Document document = new Document();
PdfWriter.getInstance(document, pdfByteStream);
document.open();

Danach kannst du auf document arbeiten und der Inhalt von pdfByteStream wird angepasst. Womit möchtest du die PDF-Daten später anzeigen? Davon hängt es ab, was als nächstes kommt :)
 

rme

Top Contributor
Der Adobe-Reader kann aber nur Dateien öffnen, die tatsächlich existieren. Du müsstest also eine temporäre Datei erzeugen und könntest diese im Adobe-Reader anzeigen. Wenn du sie nicht speicherst, existiert sie ja nur innerhalb deines Programms und darauf kann der Reader nicht zugreifen. Oder habe ich deine Anforderung falsch verstanden?
 

lieschen89

Aktives Mitglied
ah ok. Kenn das nur von Word, hatte das da gleich gesetzt, von wegen ich erstell ne Neue Datei. Die ist ja auch noch nirgends gespeichert. Sondern erst wenn man auf 'Speichern unter' klickt. Dachte im Adobe läuft das ähnlich.

Ja ok, weiß nicht, eigentlich wollte ich das schon im Adobe öffnen.

Das PDF sollte halt wenn möglich gedruckt werden können und die Möglichkeit das manuell dann abzuspeichern, falls mans doch speichern möchte in manchen Fällen, bräuchte ich eigentlich schon.
Zoomen wäre nicht schlecht. Aber nicht unbedingt notwendig.

Was gibts denn für Alternativen?

Wenn nicht dann muss ich es halt doch iwo zwischenspeichern.
 

rme

Top Contributor
Die Alternative wäre, dass du die Datei innerhalb deines Java-Programms anzeigt. Das ist aber kompliziert und für den Nutzer ungewohnt, weil sich dann nicht sein gewohntes Werkzeug zum Betrachten von PDF-Dateien öffnet.

Aber wenn du eine temporäre Datei erzeugst, bekommt der Nutzer davon ja gar nichts mit - du kannst sie an einem temporären Ort speichern, ohne den Nutzer nach einem Dateinamen oder so zu fragen und dann einfach den Reader öffnen lassen. Für den Benutzer ist es dann so, dass er auf einen Button in deinem Programm klickt, dort die Datei erzeugt und temporär gespeichert wird (merkt er nicht) und sich dann der Reader öffnet. Von da kann er dann mit Speichern Unter die Datei abspeichern, direkt drucken oder andere Wünsche mit ihr ausleben.

Welche Bedenken hast du bei diesem Vorgehen?
 

lieschen89

Aktives Mitglied
Ja, das Problem ist der Mehraufwand und dass es 'eleganter' wäre ohne Temp-File unter den unten stehenden Gesichtspunkten.

Wenn der Benutzer z.B. sich ein PDF generieren lässt, dieses aber nicht schließt und sich noch mal eins generieren lassen möchte (und ich einen fixen Speicherort habe, z.B. C:/temp/meinpdf.pdf) dann steigt das Programm aus und bringt einen Fehler, weil ja ein gerade geöffnete Datei geändert werden soll.
Das muss ja dann iwie gelöst werden.

Entweder durch eine Fehlermeldung die dem Benutzer sagt er soll die Datei schließen (unschön, dann kann er immer nur 1 PDF haben und er denkt sich, was ist dass den fürn quatsch)

Oder man macht das mit mehreren Temp-Files und vergibt die Dateinamen dynamisch (pdf1 pdf2....).
Was aber zu einem riesigem Temp-Ordner führt, der ja irgenwann auch wieder geleert werden muss.
Für den Benutzer wäre aber diese Variante, finde ich, wahrscheinlich die komfortabelste.

Aber ich denke auf den Reader will ich nicht verzichten. Werde wohl dann iwie Möglichkeit 2 umsetzen.

Aber trotzdem vielen dank.
 

rme

Top Contributor
Dafür gibt es zwei Tricks:

* benutze File.createTempFile("rechnung", ".pdf", null). Dadurch wird eine Datei mit einem zufälligen Namen, der mit "rechnung" beginnt und mit ".pdf" endet, in einem temporären Verzeichnis erzeugt. Die Methode kannst du beliebig oft aufrufen, es wird immer eine passende Datei erstellt und zurückgeliefert

* rufe die Methode deleteOnExit() auf dem erhaltenen File-Objekt auf. Dadurch wird die Datei gelöscht, sobald dein Programm beendet wird - aber nur, wenn sie im Reader auch bereits geschlossen wurde. Ansonsten kümmert sich das Betriebssystem in regelmäßigen Abständen darum, dass der Ort geleert wird, da createTempFile die Datei an einem Ort erzeugt, der aufgeräumt wird.

Du siehst, alles wird gut :)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T PDF-Generierung (itext) - läuft unter Eclipse, bei har aber leere Seite Allgemeine Java-Themen 39
izoards iText Lizenz? Allgemeine Java-Themen 2
O PDF auslesen und verändern, was ist besser iText oder PDFBox ? Allgemeine Java-Themen 9
I OpenPDF (ehem. iText) will kein PDF mit CMYK only erzeugen Allgemeine Java-Themen 6
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
W PDFs signieren mittels IText / Lowagie Allgemeine Java-Themen 0
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
S iText: zweite Seitenhälfte mit vorhandenen pdf füllen Allgemeine Java-Themen 2
S JFileChooser und iText Allgemeine Java-Themen 6
T iText mit eclipse richtig in Java-Projekt einbinden Allgemeine Java-Themen 2
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
S iText Cellen mit Attributen aus ArrayListen füllen Allgemeine Java-Themen 1
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
T itext: text in ein textfeld hinzufügen Allgemeine Java-Themen 2
K Pdf mit dynamischem Text mit iText Allgemeine Java-Themen 0
C Itext Voralagen Header Footer -> PDF Allgemeine Java-Themen 0
J iText und PdfWriter.DID_SAVE Allgemeine Java-Themen 4
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
I itext Libreoffice Java und ein PDF Template Allgemeine Java-Themen 1
F Input/Output Problem mit iText: Formularfeld uneditierbar machen Allgemeine Java-Themen 0
P iText Text zentrieren Allgemeine Java-Themen 3
L iText PDF Form-Felder werden nach Bearbeitung mit iText nicht mehr richtig erkannt. Allgemeine Java-Themen 2
A Tabelle mit iText erstellen Allgemeine Java-Themen 3
B itext Graphics Allgemeine Java-Themen 4
V iText Textfelder mit Zahlen! Allgemeine Java-Themen 2
H JTable per iText in PDF: Größenanpassung möglich? Allgemeine Java-Themen 2
M itext Leerzeichen am ende unterstreichen Allgemeine Java-Themen 4
C Wie kann man die IText Table Position bestimmen? Allgemeine Java-Themen 3
N iText-Nutzung (Version 2.1.7) in kommerzieller Website Allgemeine Java-Themen 8
K iText, HTML Einrückung im Document, aber nicht im Paragraph Allgemeine Java-Themen 3
B iText Portable Collection Acrobat X Allgemeine Java-Themen 2
J iText und images Allgemeine Java-Themen 6
S iText PDF - Verständnisproblem beim Update von TableCells (Seitenzahlen) Allgemeine Java-Themen 2
T iText Dokument in DB und dann in ein JPanel Allgemeine Java-Themen 5
N iText Problem beim verlinken anderer PDFs Allgemeine Java-Themen 2
G itext BarcodeDatamatrix Allgemeine Java-Themen 4
F IText Table ohne Rand Allgemeine Java-Themen 5
P Itext PDf wird zu groß Allgemeine Java-Themen 8
D Tabellenbeschriftung im RTF-File mit IText erstellen??? Allgemeine Java-Themen 2
D pdf mit iText drucken Allgemeine Java-Themen 4
P PDF erstellen ohne iText Allgemeine Java-Themen 3
Guybrush Threepwood iText de facto nicht mehr verwendbar Allgemeine Java-Themen 15
D tiff (->komprimieren)-> iText(pdf) Allgemeine Java-Themen 2
Dissi Itext - Anordnung von Elementen durch PDF Writer Allgemeine Java-Themen 2
Z iText - 2. Seite pdf Allgemeine Java-Themen 7
W itext: Initialer Abstand in einem Dokument Allgemeine Java-Themen 2
T Deckblatt im iText realisieren... Allgemeine Java-Themen 5
T JXPanel mit seinen Komponenten auf PDF mit iText ausgeben Allgemeine Java-Themen 15
T IText: Zwei A4 PDF´s auf ein A3 PDF´s Allgemeine Java-Themen 2
A Itext: Fonts einbetten Allgemeine Java-Themen 1
A Dynamische PDF Erstellung mit iText Allgemeine Java-Themen 4
D itext & Stringlänge Allgemeine Java-Themen 10
G iText Kursiv/Fett mit IText Allgemeine Java-Themen 3
F Probleme mit iText Allgemeine Java-Themen 3
R Pdf öffnen, das von iText erstellt wurde Allgemeine Java-Themen 4
D iText und Table.setTableFitsPage(); geht nicht Allgemeine Java-Themen 12
R Pfad zu PDF bei iText in Webapps Allgemeine Java-Themen 4
D Probleme beim Umstellen von iText 1.4.4 auf Version 2.1.2 Allgemeine Java-Themen 5
G itext größe von image Allgemeine Java-Themen 2
J itext cell border Allgemeine Java-Themen 1
E Aus mehreren PDFs eines machen, zusammenfügen mittels iText Allgemeine Java-Themen 1
T Java Applet PDF erstellen mit iText, Probleme mit Pfad Allgemeine Java-Themen 1
J Itext , Spaltenbreite automatisch anpassen ? Allgemeine Java-Themen 4
Lazybone iText und Drucken Allgemeine Java-Themen 5
J Itext Seite drehen ? Allgemeine Java-Themen 4
S iText Allgemeine Java-Themen 10
A Probleme mit iText - Text in Zellen ist zu lang Allgemeine Java-Themen 7
P RTF dynamisch machen (IText, Swing) Allgemeine Java-Themen 4
L iText: Mehrseitiges PDF erzeugen Allgemeine Java-Themen 9
L Per IText erstelltes PDF automatisch drucken Allgemeine Java-Themen 13
V Itext - "Seite . von " ausgeben Allgemeine Java-Themen 6
G iText: Problem beim Drucken von AcroFormen Allgemeine Java-Themen 2
B Probleme mit itext Allgemeine Java-Themen 2
T iText + neue Seite Allgemeine Java-Themen 14
K JFreeChart und itext: Bildprobleme Allgemeine Java-Themen 4
G iText: Wie stellt man die Höhe eines Strings fest? Allgemeine Java-Themen 3
V Lösung mit iText gesucht. Allgemeine Java-Themen 2
Z Frage zu iText Allgemeine Java-Themen 2
A Übergroße Graphics2D mit iText als PDF schreiben Allgemeine Java-Themen 3
D iText: Tabelle in Footer einfügen Allgemeine Java-Themen 6
R iText: PDF-Datei erzeugen Allgemeine Java-Themen 2
P iText unter Linux zum Laufen bringen Allgemeine Java-Themen 4
R iText.jar wird zur Laufzeit nicht gefunden Allgemeine Java-Themen 4
L editieren von pdf mit iText Allgemeine Java-Themen 2
S iText - Java meets PDF Allgemeine Java-Themen 5
B Code generierung Velocity Templates Telosys Allgemeine Java-Themen 1
M Classpath Probleme bei JAR Generierung Allgemeine Java-Themen 2
S PDF-Generierung und Drucken Allgemeine Java-Themen 11
S Automatisierte generierung von "Word"-Dokumenten Allgemeine Java-Themen 5
Guybrush Threepwood HashCode-Generierung Allgemeine Java-Themen 4
B UML: Main classe verschwindet nach code generierung nicht?! Allgemeine Java-Themen 4
S Plugin zur Generierung von Builds Allgemeine Java-Themen 7
Z Word/PDF Generierung Allgemeine Java-Themen 5
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
O Maven ein externes jar laden ohne die Applikation neu zu kompilieren Allgemeine Java-Themen 4
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
N mit sysout, ohne sysout Allgemeine Java-Themen 17
O Programmierprüfung auf moodle ohne Hilfsmittel... Allgemeine Java-Themen 23

Ähnliche Java Themen

Neue Themen


Oben