List of usage examples for com.itextpdf.text.pdf.codec Base64 encodeFromFile
public static String encodeFromFile(String filename)
From source file:de.earthdawn.CharacterContainer.java
License:Open Source License
public void writeHtml(OutputStream out, String encoding) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try {//from w w w. java 2 s. co m writeXml(baos, encoding); } catch (UnsupportedEncodingException | JAXBException e) { System.err.println(e.getLocalizedMessage()); return; } String htmlstring = ""; // Transformiere das Character XML mit Hilfe des XSLT nach HTML TransformerFactory tFactory = TransformerFactory.newInstance(); try { Transformer transformer = tFactory .newTransformer(new javax.xml.transform.stream.StreamSource("config/earthdawncharacter.xsl")); ByteArrayOutputStream html = new ByteArrayOutputStream(); transformer.transform( new javax.xml.transform.stream.StreamSource(new ByteArrayInputStream(baos.toByteArray())), new javax.xml.transform.stream.StreamResult(html)); htmlstring = html.toString(encoding); } catch (TransformerException | UnsupportedEncodingException e) { System.err.println(e.getLocalizedMessage()); return; } try { // Lese CSS ein um die referenz im HTML durch inline zu ersetzen File cssfile = new File("config/earthdawncharacter.css"); byte[] cssdata = new byte[(int) cssfile.length()]; FileInputStream cssio = new FileInputStream(cssfile); cssio.read(cssdata); cssio.close(); // Ersetzte CSS link durch CSS inline htmlstring = htmlstring.replaceAll( "<link *rel=\"stylesheet\" *type=\"text/css\" *href=\"earthdawncharacter\\.css\" */?>", "<style type=\"text/css\">" + new String(cssdata) + "</style>"); } catch (IOException e) { System.err.println(e.getLocalizedMessage()); } // Entferne XSLT Fehler htmlstring = htmlstring.replaceAll("(%0A|%09)*;base64,(%0A|%09)*", ";base64,"); // Ersetze alle Icon Links durch inline Bilder for (File iconfile : (new File("icons")).listFiles()) { if (iconfile.getName().endsWith(".png")) { try { htmlstring = htmlstring.replace(iconfile.toURI().getRawPath(), "data:image/png;base64," + Base64 .encodeFromFile(iconfile.getCanonicalPath()).replace("\r", "").replace("\n", "")); } catch (IOException e) { System.err.println(e.getMessage()); } } } //Schreibe Ergebnis weg try { PrintStream fileio = new PrintStream(out, false, encoding); fileio.print(htmlstring); fileio.close(); } catch (UnsupportedEncodingException e) { System.err.println(e.getMessage()); } }