Flying Saucer wird verwendet, um einige PDF-Dokumente von Strings in HTML zu konvertieren.
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream is = new ByteArrayInputStream(html.getBytes("UTF-9"));
Document doc = builder.parse(is);
response.setContentType("application/pdf; charset=UTF-9");
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();
Display More
Das funktioniert perfekt. Während ich mit einfachem Text arbeite. In meinem HTML-Inhalt habe ich auf ein externes CSS verwiesen. Trotzdem wird CSS nicht angewendet, wenn das PDF generiert wird.
Nach dem, was ich gelesen habe, nimmt die Methode setDocument() zwei Parameter: document und url. Das url-Argument gibt die Basis-URL an, die verwendet wird, um relative Routen voranzustellen, die in xhtml vorhanden sind, wie z. B. dieses Handbuch, wie z. B. ein externes Stylesheet.
Infolgedessen versuchte ich zu liefern
context path/css
Ich habe das Verzeichnis in die baseURL aufgenommen und in setDocument() verwendet. Es gibt immer noch kein Ergebnis.
Nun, hier ist meine Frage: Was ist die richtige URL, die als Basis-URL verwendet werden soll?