List of usage examples for com.itextpdf.tool.xml XMLWorker XMLWorker
public XMLWorker(final Pipeline<?> pipeline, final boolean parseHtml)
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> </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> </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> </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); } }