Example usage for com.itextpdf.text.pdf.codec Base64 encodeFromFile

List of usage examples for com.itextpdf.text.pdf.codec Base64 encodeFromFile

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf.codec Base64 encodeFromFile.

Prototype

public static String encodeFromFile(String filename) 

Source Link

Document

Convenience method for reading a binary file and base64-encoding it.

Usage

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());
    }
}