Example usage for com.itextpdf.tool.xml XMLWorker XMLWorker

List of usage examples for com.itextpdf.tool.xml XMLWorker XMLWorker

Introduction

In this page you can find the example usage for com.itextpdf.tool.xml XMLWorker XMLWorker.

Prototype

public XMLWorker(final Pipeline<?> pipeline, final boolean parseHtml) 

Source Link

Document

Constructs a new XMLWorker

Usage

From source file:org.freelancertech.poc.itext.ParseHtmlTable1.java

public static byte[] convertHtmlToPdf(String content) throws IOException, DocumentException {
    final ClassLoader classLoader = ParseHtmlTable1.class.getClassLoader();
    try (ByteArrayOutputStream file = new ByteArrayOutputStream();
            InputStream is = new ByteArrayInputStream(content.getBytes());) {
        final Document document = new Document();
        final PdfWriter writer = PdfWriter.getInstance(document, file);
        document.open();/*from  w w w .j a v  a 2s .c  o m*/
        final TagProcessorFactory tagProcessorFactory = Tags.getHtmlTagProcessorFactory();
        tagProcessorFactory.removeProcessor(HTML.Tag.IMG);
        tagProcessorFactory.addProcessor(new ImageTagProcessor(), HTML.Tag.IMG);
        final CssFile cssFile = XMLWorkerHelper.getCSS(classLoader.getResourceAsStream(STYLE_FILE_NAME));
        final CssFilesImpl cssFiles = new CssFilesImpl(cssFile);
        //cssFiles.add(XMLWorkerHelper.getInstance().getDefaultCSS());
        final StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles);
        final HtmlPipelineContext hpc = new HtmlPipelineContext(
                new CssAppliersImpl(new XMLWorkerFontProvider()));
        hpc.setAcceptUnknown(true).autoBookmark(true).setTagFactory(tagProcessorFactory);
        final HtmlPipeline htmlPipeline = new HtmlPipeline(hpc, new PdfWriterPipeline(document, writer));
        final Pipeline<?> pipeline = new CssResolverPipeline(cssResolver, htmlPipeline);
        final XMLWorker worker = new XMLWorker(pipeline, true);
        final Charset charset = Charset.forName("UTF-8");
        final XMLParser xmlParser = new XMLParser(true, worker, charset);

        xmlParser.parse(is, charset);
        document.close();
        return file.toByteArray();
    }
}

From source file:org.saiku.web.export.PdfReport.java

License:Apache License

public void populatePdf(Document doc, PdfWriter writer, QueryResult qr) throws Exception {
    Long start = (new Date()).getTime();
    String content = JSConverter.convertToHtml(qr);

    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
    Date date = new Date();
    content = "<p>" + "Saiku Export - " + dateFormat.format(date) + "</p><p>&nbsp;</p>" + content;

    InputStream contentIs = new ByteArrayInputStream(content.getBytes("UTF-8"));
    Long rhino = (new Date()).getTime();
    // CSS/*w  w  w.  j  a va2s. c  o  m*/
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    CssFile cssFile = XMLWorkerHelper.getCSS(getClass().getResourceAsStream("saiku.table.pdf.css"));
    cssResolver.addCss(cssFile);
    // HTML
    XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider();
    fontProvider.defaultEncoding = "UTF-8";
    CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    // Pipelines
    PdfWriterPipeline pdf = new PdfWriterPipeline(doc, writer);
    HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);
    p.parse(contentIs, true);
    Long parse = (new Date()).getTime();
    LOG.debug("PDF Output - JSConverter: " + (rhino - start) + "ms PDF Render: " + (parse - rhino) + "ms");
}

From source file:org.smap.sdal.managers.PDFSurveyManager.java

License:Open Source License

private Parser getXMLParser() {

    Parser parser = new Parser();

    // CSS//from w w  w . j  a  v  a  2 s. com
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(DEFAULT_CSS);
        CssFile cssFile = XMLWorkerHelper.getCSS(fis);
        cssResolver.addCss(cssFile);
    } catch (Exception e) {
        log.log(Level.SEVERE, "Failed to get CSS file", e);
        cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true);
    } finally {
        try {
            fis.close();
        } catch (Exception e) {
        }
    }

    // Pipelines
    parser.elements = new ElementList();
    ElementHandlerPipeline end = new ElementHandlerPipeline(parser.elements, null);

    String os = System.getProperty("os.name");
    log.info("Operating System:" + os);

    XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider();

    if (os.startsWith("Mac")) {
        fontProvider.register("/Library/Fonts/NotoSansBengali-Regular.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/Library/Fonts/NotoNaskhArabic-Regular.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/Library/Fonts/NotoSansBengali-Bold.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/Library/Fonts/NotoSans-Regular.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/Library/Fonts/NotoSans-Bold.ttf", BaseFont.IDENTITY_H);

    } else if (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0 || os.indexOf("aix") > 0) {
        // Linux / Unix
        fontProvider.register("/usr/share/fonts/truetype/NotoSansBengali-Regular.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/usr/share/fonts/truetype/NotoNaskhArabic-Regular.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/usr/share/fonts/truetype/NotoNaskhArabic-Regular.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/usr/share/fonts/truetype/NotoSans-Regular.ttf", BaseFont.IDENTITY_H);
        fontProvider.register("/usr/share/fonts/truetype/NotoSans-Bold.ttf", BaseFont.IDENTITY_H);
    }

    /*
     System.out.println("Fonts present in " + fontProvider.getClass().getName());
         Set<String> registeredFonts = fontProvider.getRegisteredFonts();
         for (String font : registeredFonts)
       System.out.println(font);
     */
    CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);

    // HTML
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    htmlContext.autoBookmark(false);
    HtmlPipeline html = new HtmlPipeline(htmlContext, end);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

    XMLWorker worker = new XMLWorker(css, true);
    parser.xmlParser = new XMLParser(worker);

    return parser;

}

From source file:org.smap.sdal.managers.PDFTableManager.java

License:Open Source License

private Parser getXMLParser() {

    Parser parser = new Parser();

    // CSS//from  w  w w.  j  a va  2s  . c om
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(DEFAULT_CSS);
        CssFile cssFile = XMLWorkerHelper.getCSS(fis);
        cssResolver.addCss(cssFile);
    } catch (Exception e) {
        log.log(Level.SEVERE, "Failed to get CSS file", e);
        cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true);
    } finally {
        try {
            fis.close();
        } catch (Exception e) {
        }
    }

    // HTML
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    htmlContext.autoBookmark(false);

    // Pipelines
    parser.elements = new ElementList();
    ElementHandlerPipeline end = new ElementHandlerPipeline(parser.elements, null);
    HtmlPipeline html = new HtmlPipeline(htmlContext, end);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

    // XML Worker
    XMLWorker worker = new XMLWorker(css, true);
    parser.xmlParser = new XMLParser(worker);

    return parser;

}

From source file:projekt.Class.SaveToPDF.java

/**
 * * Metoda, ktra tworzy plik pdf na podan ciek
 *
 * @param file cieka dostpu do pluku na ktrym ma by zapisaby plik pdf
 * @throws IOException       wyjtek wejcia/ wyjcia
 * @throws DocumentException wyjatek podczas tworzenia dokumentu
 *//*from w  w  w  .  j a  v a2 s .  co  m*/
public static void createPdf(File file) throws IOException, DocumentException {
    Document document = new Document();
    String HTML = "src/projekt/HTML/Diagnoza/diagnoza.html";
    String CSS = "src/projekt/HTML/Diagnoza/styl.css";
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
    writer.setInitialLeading(12.5f);
    document.open();
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    CssFile cssFile = XMLWorkerHelper.getCSS(new FileInputStream(CSS));
    cssResolver.addCss(cssFile);
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
    HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);
    p.parse(new FileInputStream(HTML));
    document.close();
}

From source file:sandbox.xmlworker.reporting.FillTemplateHelper.java

public static ElementList parseHtml(String content, String style, TagProcessorFactory tagProcessors)
        throws IOException {
    // CSS//from   w w  w  .  j  a v  a 2 s .c o m
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    CssFile cssFile = XMLWorkerHelper.getCSS(new FileInputStream(style));
    cssResolver.addCss(cssFile);
    // HTML
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
    htmlContext.setTagFactory(tagProcessors);
    htmlContext.autoBookmark(false);
    // Pipelines
    ElementList elements = new ElementList();
    ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null);
    HtmlPipeline html = new HtmlPipeline(htmlContext, end);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
    // XML Worker
    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);

    p.parse(new FileInputStream(content), Charset.forName("cp1252"));
    return elements;
}

From source file:scoretracker.beans.EJB.PDFService.java

public void createPdfStudent(Student s) throws IOException, DocumentException {

    //The directory in which the PDF will be stord, including a name 
    final String PDFLOCATION = "C:\\created_PDFs\\" + s.getName() + s.getPrename() + "_" + s.getRNr() + "_"
            + s.getClassId().getName() + ".pdf";

    //Collect student's points
    List<Teststudent> tests = dataservice.getDataPPSTS(s);

    File file = new File(PDFLOCATION);
    //Creating the required directory structure
    file.getParentFile().mkdirs();//from   w  w  w . ja va2 s. c  o m

    Document document = new Document();

    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));

    document.open();

    //Create the table headers for our table
    StringBuilder sb = new StringBuilder();
    sb.append("<h4>");
    sb.append("Overview of all tests made by: ");
    sb.append(s.getName());
    sb.append(" ");
    sb.append(s.getPrename());
    sb.append("</h4>");
    sb.append("<p>Class: ");
    sb.append(s.getClassId().getName());
    sb.append("</p><br/>");
    sb.append("<table border=\"2\">");
    sb.append("<tr>");
    sb.append("<th>Course</th>");
    sb.append("<th>Score</th>");
    sb.append("</tr>");

    //Fill the data columns with the student's points
    for (Teststudent test : tests) {
        sb.append("<tr>");
        sb.append("<td>");
        sb.append(test.getTestId().getName());
        sb.append(" - " + test.getTestId().getCourseId().getName());
        sb.append("</td>");

        sb.append("<td>");
        sb.append(test.getScore());
        sb.append("/20");
        sb.append("</td>");
        sb.append("</tr>");
    }

    sb.append("</table>");

    //Apply the CSS to our table
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(CSS.getBytes()));
    cssResolver.addCss(cssFile);

    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());

    PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
    HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);
    p.parse(new ByteArrayInputStream(sb.toString().getBytes()));

    document.close();
}

From source file:scoretracker.beans.EJB.PDFService.java

public void createPdfTest(Teststudent t) throws IOException, DocumentException {

    List<Teststudent> testsInfo = dataservice.getDataPPT(0, 0, t.getTestId().getId());

    //The directory in which the PDF will be stord, including a name 
    final String PDFLOCATION = "C:\\created_PDFs\\" + t.getTestId().getName() + "_"
            + t.getTestId().getClassId().getName() + ".pdf";

    File file = new File(PDFLOCATION);
    //Creating the required directory structure
    file.getParentFile().mkdirs();// www .j  a v a  2  s . co  m

    Document document = new Document();

    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));

    document.open();

    //Create the table headers for our table
    StringBuilder sb = new StringBuilder();
    sb.append("<h4>Results for: ");
    sb.append(t.getTestId().getName());
    sb.append(" - ");
    sb.append(t.getTestId().getCourseId().getName());
    sb.append("</h4>");
    sb.append("<p>Voor klas ");
    sb.append(t.getTestId().getClassId().getName());
    sb.append("</p><br/>");
    sb.append("<table border=\"2\">");
    sb.append("<tr>");
    sb.append("<th>Student</th>");
    sb.append("<th>Score</th>");
    sb.append("</tr>");

    //Fill the data columns with the student's name and points
    for (Teststudent test : testsInfo) {
        sb.append("<tr>");
        sb.append("<td>");
        sb.append(test.getStudentId().getName());
        sb.append(" ");
        sb.append(test.getStudentId().getPrename());
        sb.append("</td>");

        sb.append("<td>");
        sb.append(test.getScore());
        sb.append("/20");
        sb.append("</td>");
        sb.append("</tr>");
    }

    sb.append("</table>");

    //Apply the CSS to our table
    CSSResolver cssResolver = new StyleAttrCSSResolver();
    CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(CSS.getBytes()));
    cssResolver.addCss(cssFile);

    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());

    PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
    HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);
    p.parse(new ByteArrayInputStream(sb.toString().getBytes()));

    document.close();

}

From source file:Servlet.PDFServlet.java

/**
 * Handles the HTTP <code>POST</code> method.
 *
 * @param request servlet request/*from  w  w w  .j a  v a 2  s  . c o  m*/
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    String strData = request.getParameter("hidden_pdfData");
    //System.out.println("strData_new --> " + strData);
    String[] strSplitData = strData.split("###");
    String strBerichtname;
    String strTable;

    strBerichtname = strSplitData[0];
    strTable = strSplitData[1];

    String strAusgabe = "Es ist ein unerwartetes Problem aufgetreten";
    boolean boolLeerbericht = true;
    HttpSession userSession = request.getSession();
    switch (strBerichtname) {
    case "Einsatzbericht leer":
        strAusgabe = generiereAusgabeEinsatzberichtLeer(strTable, strSplitData[2]);
        break;
    case "bungsbericht leer":
        strAusgabe = generiereAusgabeUebungsberichtLeer(strTable, strSplitData[2]);
        break;
    case "Ttigkeitsbericht leer":
        strAusgabe = generiereAusgabeTaetigkeitsberichtLeer(strTable, strSplitData[2]);
        break;
    case "Dynamisch":
        strAusgabe = "<h1>" + strBerichtname + "</h1>" + strTable;
        boolLeerbericht = false;
        break;
    case "Kursstatistik":
        if (strTable.split("<td>").length > 1 && strSplitData[2].split("<td>").length > 1) {
            strAusgabe = "<h1>" + strBerichtname + "</h1>" + strSplitData[2].replace("</br>", "")
                    + "<p>&nbsp;</p>" + strTable;
        } else if (strTable.split("<td>").length < 2) {
            strAusgabe = "<h1>" + strBerichtname + "</h1>" + strSplitData[2].replace("</br>", "");
        } else if (strSplitData[2].split("<td>").length < 2) {
            strAusgabe = "<h1>" + strBerichtname + "</h1>" + strTable;
        }
        boolLeerbericht = false;
        break;
    case "Digitales Fahrtenbuch":
        if (strSplitData.length > 2) {
            strAusgabe = "<h1>" + strBerichtname + "</h1>" + strSplitData[2] + "<p>&nbsp;</p>" + strTable;
        } else {
            strAusgabe = "<h1>" + strBerichtname + "</h1>" + strTable;
        }
        boolLeerbericht = false;
        break;
    case "Stundenauswertung je Mitglied je Instanz":
        strAusgabe = "<h1>" + strBerichtname + "</h1>"
                + generiereStundenauswertungJeMitgliedJeInstanz(strTable);
        boolLeerbericht = false;
        break;
    case "Geburtstagsliste":
        strAusgabe = "<h1>" + strBerichtname + " " + userSession.getAttribute("attJahr") + "</h1>" + strTable;
        boolLeerbericht = false;
        break;
    case "Dienstzeitliste":
        strAusgabe = "<h1>" + strBerichtname + " " + userSession.getAttribute("attJahrDienst") + "</h1>"
                + strTable;
        boolLeerbericht = false;
        break;
    default:
        strAusgabe = "<h1>" + strBerichtname + "</h1>" + strTable;
        boolLeerbericht = false;
    }
    String strContextPath = this.getServletContext().getRealPath("/");
    String strCSSPath1 = strContextPath + File.separator + "css" + File.separator + "pdfSimpel.css";
    String strFontPath = strContextPath + File.separator + "res" + File.separator + "Cambria.ttf";

    //FAIL - just ignore
    //strAusgabe = strAusgabe.substring(0, pos+5) + ("<thead>" + strAusgabe.split("<thead>")[1].split("</thead>")[0] + "</thead>") + strAusgabe.substring(pos+5);
    //String strHead = "<thead>" + strAusgabe.split("<thead>")[1].split("</thead>")[0] + "</thead>";
    //String strUeberschrift = "<h1>" + strAusgabe.split("<h1>")[1].split("</h1")[0] + "</h1>";
    if (!strBerichtname.contains("leer")) {
        strAusgabe = strAusgabe.replace("<table", "<table style='repeat-header: yes;' ");
    }

    Rectangle rect;
    try {
        Document document;
        if (liBerHochformat.contains(strBerichtname)) {
            document = new Document(PageSize.A4, 36, 36, 100, 54);
            rect = new Rectangle(36, 54, 559, 788);
        } else {
            document = new Document(PageSize.A4.rotate(), 36, 36, 70, 54);
            rect = new Rectangle(36, 54, 805, 559);
        }

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PdfWriter writer = PdfWriter.getInstance(document, baos);
        PDF_KopfFuzeile event = new PDF_KopfFuzeile(strFontPath, writer);
        writer.setBoxSize("pageRect", rect);
        writer.setPageEvent(event);

        document.open();
        HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
        htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
        CSSResolver cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(false);
        //hier werden die CSS files eingebunden
        cssResolver.addCssFile(strCSSPath1, true);

        if (liBerHochformat.contains(strBerichtname)) {
            cssResolver.addCssFile(strCSSPath1.replace("Simpel", "Hoch"), true);
        } else {
            cssResolver.addCssFile(strCSSPath1.replace("Simpel", "Quer"), true);
        }
        if (!boolLeerbericht) {
            cssResolver.addCssFile(strCSSPath1.replace("Simpel", "StandartBericht"), true);
        } else {
            cssResolver.addCssFile(strCSSPath1.replace("Simpel", "Leerbericht"), true);
        }
        Pipeline<?> pipeline = new CssResolverPipeline(cssResolver,
                new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer)));

        XMLWorker worker = new XMLWorker(pipeline, true);
        XMLParser p = new XMLParser(worker);
        XMLParser p2 = new XMLParser(worker);
        p.toString();
        //ByteArrayInputStream bis = new ByteArrayInputStream(strAusgabe.toString().getBytes());
        //ByteArrayInputStream cis = new ByteArrayInputStream(strCSSPath1.replace("Simple", "Hoch").toString().getBytes());
        //XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis, cis);
        //p.selectState().selfClosing();

        p.parse(new StringReader(strAusgabe));

        document.close();
        writer.close();
        strBerichtname = strBerichtname.replaceAll(" ", "_");
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "filename=" + strBerichtname + ".pdf");
        response.setContentLength(baos.size());

        ServletOutputStream os = response.getOutputStream();
        baos.writeTo(os);
        os.flush();
        os.close();
    } catch (DocumentException de) {
        throw new IOException(de.getMessage());
    } catch (CssResolverException ex) {
        Logger.getLogger(PDFServlet.class.getName()).log(Level.SEVERE, null, ex);
    }

}