List of usage examples for com.itextpdf.tool.xml.parser XMLParser parse
public void parse(final Reader reader) throws IOException
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();//from w w w . j av a 2 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>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 a2 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); } }