List of usage examples for com.itextpdf.tool.xml XMLWorkerFontProvider XMLWorkerFontProvider
public XMLWorkerFontProvider()
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 ww. j a va 2 s.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 ww .j a va 2s. co 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 .ja va2s . 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) { } } // 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; }