HTML Seite als PDF

Stroker89

Bekanntes Mitglied
Hallo :)

Ich suche eine Möglichkeit eine HTML Seite (ist die Ausgabe) über ein Servlet (als Beispiel) direkt als PDF umzuwandeln.

Gibt es da irgendwelche Möglichkeiten? Meine suche hat bis jetzt kein Ergebnis gebracht :(

Gruß Martin
 

nocturne

Bekanntes Mitglied
Ich benutze folgendes Servlet:
Java:
package org.bla;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.net.URL;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;

import org.apache.pdfbox.PDFBox;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.PrettyXmlSerializer;
import org.htmlcleaner.TagNode;
import org.w3c.dom.Document;
import org.xhtmlrenderer.pdf.ITextRenderer;
import org.xml.sax.InputSource;

import com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl;

public class PDFServlet extends HttpServlet {

	DocumentBuilderFactoryImpl dbfi = new DocumentBuilderFactoryImpl();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try {
			resp.setContentType("application/pdf");

			HttpServletResponse response = (HttpServletResponse) resp;
			HtmlCleaner cleaner = new HtmlCleaner();

			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			OutputStreamWriter osw = new OutputStreamWriter(baos);

			URL url = new URL(req.getRequestURL() + ".jsp?" + req.getQueryString());
			InputStream t = (InputStream) url.openStream();
			TagNode node = cleaner.clean(t);
			t.close();
			node.serialize(new PrettyXmlSerializer(cleaner.getProperties()), osw);
			osw.close();

			String xhtml = baos.toString("utf8");
			System.out.println(xhtml);
			StringReader contentReader = new StringReader(xhtml);
			InputSource source = new InputSource(contentReader);

			DocumentBuilder dbi = dbfi.newDocumentBuilder();
			Document xhtmlContent = dbi.parse(source);

			ITextRenderer renderer = new ITextRenderer();

			renderer.getFontResolver().addFont(getClass().getResource("/wingding.ttf") + "", false);
			renderer.setDocument(xhtmlContent, "");
			renderer.layout();

			PDFBox box = new PDFBox();

			ByteArrayOutputStream pdfdata = new ByteArrayOutputStream();
			renderer.createPDF(pdfdata);
			pdfdata.close();

			PDFParser p = new PDFParser(new ByteArrayInputStream(pdfdata.toByteArray()));
			p.parse();

			PDDocument doc = new PDDocument(p.getDocument());
			PDDocumentInformation info = doc.getDocumentInformation();

			info.setAuthor("Author");
			info.setKeywords("Keywords");
			info.setTitle("Title");
			info.setTrapped("False");
			info.setCustomMetadataValue("", "");
			info.setCreator("Creator");
			info.setSubject("Subject");
			info.setProducer("Producer");
			doc.setDocumentInformation(info);

			doc.save(resp.getOutputStream());
			doc.close();

		} catch (Exception e) {
			e.printStackTrace();
			resp.setContentType("text/plain");
			e.printStackTrace(resp.getWriter());
		}
	}

}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B statische Html Seite als response erhalten (Servlet) Web Tier 3
M In einer HTML Tabelle positionieren Web Tier 4
I HTML nach Image Web Tier 1
S Einträge aus Datenbank einzeln darstellen (JSP, JAVA, HTML) Web Tier 9
J Welches Programm visualisiert mir einen html-Dom als Baumdiagram? Web Tier 5
G HTML Fragment in Bean erzeugen? Web Tier 1
E Wie kann ich dynamische HTML- Tabellen(-spalten) mit JSP aus SELECT-Anweisung erstellen? Web Tier 2
T Spring HTML Tabellen sortieren, filtern, Attribute ausblenden Web Tier 3
D Servlet Servlet Weiterleitung static html Web Tier 5
K Wicket: Pfad zu HTML Dateien ändern/erweitern Web Tier 2
S JSP STRUCT Elemente in HTML Tabelle Web Tier 8
L JSF, no tag was defined for name: html Web Tier 5
S JSP Erzeugten JSP HTML-Quelltext in html-Datei speichern Web Tier 4
V JSF JSF und Standard HTML-Tags Web Tier 7
J JSF Verwirrung: JSF und generiertes HTML sieht 'cryptisch' aus Web Tier 18
S Mit GWT ein Widget/Komponente/HTML-Element im Backend erzeugen? Web Tier 4
S JSP HTML+CSS in JSP einbinden Web Tier 4
T Richtige Aussgabe in eine HTML mit JSF Web Tier 2
S Auswahl eine Zeile von einer HTML Tabelle im Servlet Web Tier 4
S HTML Output verschleiern Web Tier 6
P Problem mit HTML.Tag.OPTION Web Tier 3
J response HTML verwenden Web Tier 2
F HTML select auslesen Web Tier 3
D Formular als Applet oder HTML Web Tier 6
E Suche Wiki Markup -> HTML rendering engine Web Tier 7
M html + jquery(javascript-framework): elegantes und flexibles Formulardesign Web Tier 5
D <html:select> bzw. <html:option> - Methode auslösen ? Web Tier 2
T JBoss + Servlet + HTML Fileupload + Encoding Web Tier 1
J Wie realisiert man einen HTML-Chat? Web Tier 3
K JSF und HTML-Code Web Tier 2
O JSP: HTML tags werden vor struts tags angezeigt Web Tier 3
F Java Applets in html einbinden Web Tier 10
ff html:text aus mapped properties rendern Web Tier 2
? XML Parsen - IDs auslesen - HTML generieren Web Tier 11
A Struts - JSP - HTML - Visualisierungsproblem Web Tier 3
S Probleme mit den Nav_rules und HTML code Web Tier 2
T HTML Darstellungsproblem Web Tier 3
T html login und apache client Web Tier 13
H Java Servlet und HTML Form Web Tier 3
G MyFaces: HTML Ausgabe Code steuern Web Tier 8
B Struts: html:checkbox Web Tier 2
S Seite nur aufrufbar machen für eingeloggte User Web Tier 1
J dynamische jsf-seite programmatisch erstellen Web Tier 1
M Seite per Push neuladen Web Tier 2
P JSF Ajax aktualisiert Seite neu Web Tier 2
F JSF selectManyCheckbox Checkbox auf der rechten Seite Web Tier 3
M GWT - Externe Java Libs auf Server Seite - zB. JDBC Web Tier 6
A Aufruf eines Servlets auf einer JSP Seite funktioniert nicht Web Tier 10
J Was ist denn eine index.jsp seite ? Web Tier 5
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
Q JSF bei Session-Timeout Weiterleitung auf spezielle Login-Seite Web Tier 15
xehpuk JSF 404 statt 500 bei nicht existenter JSF-Seite Web Tier 7
dataframe Persistenz aus JSF-Seite ansteuern Web Tier 12
K Servlet + JSP: JSP-Seite ein Array/ArrayList überliefern vom Controller-Servlet Web Tier 8
M JSF Umfangreiche Seite strukturieren Web Tier 5
L einfache JSF-Seite wird nicht angezeigt Web Tier 8
R JSF Mit Ajax ganze Seite neu laden Web Tier 2
X Seite wird mit AJAX neu geladen Web Tier 4
R Zugriff auf Session direkt auf JSF-Seite Web Tier 2
D Auf andere Seite mit GWT Web Tier 2
J JSP-Seite kann nicht aufgerufen werden Web Tier 14
K Analye einer Seite (Java, JSP, ...) Web Tier 12
I Setten auf der JSF - Seite Web Tier 2
M Ton wiedergabe über jsp-Seite Web Tier 2
G Code in JSF-Seite Web Tier 7
J Hilfe: seite includieren mit IceFaces Web Tier 2
T Template für die ganze Seite Web Tier 6
I JSF Nur max 20 Datensätze anzeigen lassen, dann nächste Seite Web Tier 8
P request.getParameter("name") von Formular auf JSP-Seite leer Web Tier 5
aokai ExterneJS-JSP Seite einbinden Web Tier 2
C navigation auf einer jsp Seite Web Tier 3
F sendError geht nicht richtig, seite leer Web Tier 6
K JSF Seite mit Dateien der Endung *.jsf Web Tier 4
D PreparedStatement: Seite zeigt nichts an Web Tier 7
T Wie feststellen, ob ein Benutzer noch auf meiner Seite ist Web Tier 14
K [gelöst] JSF-Seite wird nicht angezeigt Web Tier 3
H JSF Seite wird plain angezeigt Web Tier 3
P JSP Seite verlassen Web Tier 2
M Authentifizierung über PhaseListener je nach Seite Web Tier 11
M Servlet Submit ergebniss in seite einbauen Web Tier 2
F Beim Aufruf von einer JSF Seite eine Methode ausführen Web Tier 9

Ähnliche Java Themen

Neue Themen


Oben