HTML zu PDF mit iText Externe CSS
Ich bin mit einer Fliegenden Untertasse zu machen einige PDF-Dokumente von strings in HTML.
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream is = new ByteArrayInputStream(html.getBytes("UTF-8"));
Document doc = builder.parse(is);
response.setContentType("application/pdf; charset=UTF-8");
response.setHeader("Content-disposition", "inline; filename=\"" + outFileName + "\"");
OutputStream os = response.getOutputStream();
ITextRenderer iTextRenderer = new ITextRenderer();
iTextRenderer.setDocument(doc,null);
iTextRenderer.layout();
iTextRenderer.createPDF(os);
os.flush();
os.close();
Dies funktioniert gut, Wenn ich Klartext.
Ich habe referenzierte externe CSS-Datei in meine HTML-Inhalt. Aber, Wenn das PDF generiert wird CSS nicht angewendet werden.
Ich habe gelesen, dass Das setDocument()
- Methode nimmt zwei Parameter: Dokument und url. Die url-parameter gibt die Basis-url voranstellen, um relative Pfade angezeigt, die in der xhtml -, wie eine externe CSS -
So, ich habe versucht, die Versorgung
Kontext Pfad/css
direcotry in die baseURL und verwendet es in der setDocument()
. Immer noch kein Ergebnis
So, Meine Frage Was ist die richtige URL übergeben, als baseURL ?
String baseURL = ""; //What goes here as root URL for resources
iTextRenderer.setDocument(doc,baseURL);
InformationsquelleAutor Hardik Mishra | 2012-08-20
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den FAQ sagt dieser:
Haben, testen Sie den Pfad zu Ihrem Dokument anstelle der Pfad zu deiner css? Allerdings hatte ich einige Probleme mit der Verlinkung der CSS auch so ich eingefügt, die URI (bisher keine Probleme 🙂 ). Wenn Sie einen link verwenden, wie ich oben geschrieben, funktioniert es?
Sorry für neuen post, aber die Kommentare hat mir gesagt ich habe nur negative char übrig ...
Können Sie die CSS-Pfade, indem Sie
<link type="text/css" href="file://path/to/your.css" />
in Ihrem Dokument (Kopf).
(In einigen Fällen können Sie einen einfachen Pfad anstelle eines URI)
Das problem ist nicht der Pfad, das problem sind die Medien. Eine Sache ist zum Rendern von Bildschirm-und anderen zu machen, um print-Medien, wie eine pdf-Datei. So fügen Sie ein Attribut im stylesheet-TAG in der XML-Datei.
Aus code.google.com/p/flying-saucer/wiki/FAQPDF
Die schnelle Antwort, ist das hinzufügen des Attributs
media="all"
um die XML-stylesheet-TAG wie diesem:alternative, die Sie verwenden können
media="print"