public SetTagFactory ( ITagProcessorFactory tagFactory ) : |
||
tagFactory | ITagProcessorFactory | |
return |
public void HtmlToPdf(string htmlFile, string pdfFile, string htmlImageDirectory) { using (FileStream pdfStream = new FileStream(pdfFile, FileMode.OpenOrCreate)) { Document doc = new Document(); PdfWriter writer = PdfWriter.GetInstance(doc, pdfStream); doc.Open(); //TODO: apply external css ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); //HTML HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); htmlContext.SetImageProvider(new ImageProvider(htmlImageDirectory)); htmlContext.SetLinkProvider(new LinkProvider("/")); //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(true, worker, Encoding.UTF8); using (TextReader reader = File.OpenText(htmlFile)) { p.Parse(reader); } doc.Close(); } }
virtual public void SetupDefaultProcessingYourself() { Document doc = new Document(PageSize.A4); PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(TARGET + "columbus2.pdf", FileMode.Create)); doc.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(doc, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser p = new XMLParser(worker); p.Parse(File.OpenRead(RESOURCES + @"\examples\columbus.html")); doc.Close(); }
protected void btnGeneratePdf_Click1(object sender, EventArgs e) { var sb = new StringBuilder(); sb.Append("<table>"); sb.Append("<tr>"); sb.Append("<th class=\"th\">Title</th>"); sb.Append("<th>Author</th>"); sb.Append("</tr>"); MongoDbProvider.db.LoadData<Word>().ToList().ForEach(b => { sb.Append("<tr>"); sb.AppendFormat("<td>{0}</td>", b.WordName); sb.AppendFormat("<td>{0}</td>", b.Translation); sb.Append("</tr>"); }); sb.Append("</table>"); using (var document = new Document()) { PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(Server.MapPath("loremipsum5.pdf"), FileMode.Append)); document.Open(); var htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); //change this to your CCS file location cssResolver.AddCssFile(Server.MapPath("style.css"), true); var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); var worker = new XMLWorker(pipeline, true); var p = new XMLParser(worker); p.Parse(new StringReader(sb.ToString())); } }
private void iTextSharp(string html) { System.Web.HttpContext.Current.Response.ContentType = "application/pdf"; System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=BookingDetails.pdf"); System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); Document pdfDoc = new Document(new Rectangle(922, 1296), 7f, 7f, 7f, 0f); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream); pdfDoc.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICssFile cfile = new CssFileImpl(); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssResolver.AddCssFile(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + @"App_Data\PDF.all.min.css", true); //Pipeline IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(pdfDoc, writer))); //XMLWorker XMLWorker worker = new XMLWorker(pipeline, true); XMLParser parser = new XMLParser(); parser.AddListener(worker); using (TextReader sr = new StringReader(html)) { parser.Parse(sr); } parser.Flush(); pdfDoc.Close(); System.Web.HttpContext.Current.Response.Write(pdfDoc); System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest(); }
/// <summary> /// ExecuteResult /// </summary> /// <param name="context"></param> public override void ExecuteResult(ControllerContext context) { context.HttpContext.Response.Clear(); context.HttpContext.Response.ContentType = "application/pdf"; if (Download) context.HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + FileName); Html = RenderRazorViewToString(context); Format(context.HttpContext); using (var document = new Document(Settings.PageSize, Settings.Margin.Left, Settings.Margin.Right, Settings.Margin.Top, Settings.Margin.Bottom)) { var memoryStream = new MemoryStream(); TextReader textReader = new StringReader(Html); var pdfWriter = PdfWriter.GetInstance(document, memoryStream); var htmlPipelineContext = new HtmlPipelineContext(null); var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); document.Open(); FontFactory.RegisterDirectories(); htmlPipelineContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); foreach (var styleSheet in StyleSheets) { cssResolver.AddCssFile(context.HttpContext.Server.MapPath(styleSheet), true); } var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlPipelineContext, new PdfWriterPipeline(document, pdfWriter))); var worker = new XMLWorker(pipeline, true); var xmlParse = new XMLParser(true, worker); xmlParse.Parse(textReader); xmlParse.Flush(); document.Close(); document.Dispose(); context.HttpContext.Response.BinaryWrite(memoryStream.ToArray()); } context.HttpContext.Response.End(); context.HttpContext.Response.Flush(); }
/** * Parses an HTML string and a string containing CSS into a list of Element objects. * The FontProvider will be obtained from iText's FontFactory object. * * @param html a String containing an XHTML snippet * @param css a String containing CSS * @return an ElementList instance */ public static ElementList ParseToElementList(String html, String css) { // CSS ICSSResolver cssResolver = new StyleAttrCSSResolver(); if (css != null) { ICssFile cssFile = XMLWorkerHelper.GetCSS(new MemoryStream(Encoding.Default.GetBytes(css))); cssResolver.AddCss(cssFile); } // HTML CssAppliers cssAppliers = new CssAppliersImpl(FontFactory.FontImp); HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); htmlContext.AutoBookmark(false); // Pipelines ElementList elements = new ElementList(); ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null); HtmlPipeline htmlPipeline = new HtmlPipeline(htmlContext, end); CssResolverPipeline cssPipeline = new CssResolverPipeline(cssResolver, htmlPipeline); // XML Worker XMLWorker worker = new XMLWorker(cssPipeline, true); XMLParser p = new XMLParser(worker); p.Parse(new MemoryStream(Encoding.Default.GetBytes(html))); return elements; }
static protected void TransformHtml2Pdf(FileStream inputHtml, Document doc, PdfWriter pdfWriter) { CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(XMLWorkerHelper.GetInstance().GetDefaultCSS()); StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles); String Css1 = "https://specialtyonlinestg.cardinalhealth.com/CardinalHealthSpecialty/themes/html/SS_SPDCardinalHealth/css/globalStyles.css?version=RI_20121023"; String Css2 = "https://specialtyonlinestg.cardinalhealth.com/CardinalHealthSpecialty/themes/html/SS_SPDCardinalHealth/css/SPDCSS/CAHPHReconciliationPortletView.css?version=AC_20120717"; try { cssResolver.AddCssFile(Css1, true); cssResolver.AddCssFile(Css2, true); } catch (CssResolverException e) { // TODO Auto-generated catch block } HtmlPipelineContext htmlContext = new HtmlPipelineContext(new CssAppliersImpl(new XMLWorkerFontProvider())); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); htmlContext.SetPageSize(new Rectangle(doc.Left, doc.Bottom, doc.Right, doc.Top)); // Pipelines PdfWriterPipeline pdf = new PdfWriterPipeline(doc, pdfWriter); HtmlPipeline html = new HtmlPipeline(htmlContext, pdf); CssResolverPipeline css = new CssResolverPipeline(cssResolver, html); XMLWorker worker = new XMLWorker(css, true); XMLParser parser = new XMLParser(worker, Encoding.UTF8); parser.Parse(inputHtml, Encoding.UTF8); }
public void ConvertHtmlToPdf(string xHtml, string css) { using (var stream = new FileStream(OUTPUT_FILE, FileMode.Create)) { using (var document = new Document()) { var writer = PdfWriter.GetInstance(document, stream); document.Open(); // instantiate custom tag processor and add to `HtmlPipelineContext`. var tagProcessorFactory = Tags.GetHtmlTagProcessorFactory(); tagProcessorFactory.AddProcessor( new TableDataProcessor(), new string[] { HTML.Tag.TD } ); var htmlPipelineContext = new HtmlPipelineContext(null); htmlPipelineContext.SetTagFactory(tagProcessorFactory); var pdfWriterPipeline = new PdfWriterPipeline(document, writer); var htmlPipeline = new HtmlPipeline(htmlPipelineContext, pdfWriterPipeline); // get an ICssResolver and add the custom CSS var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); cssResolver.AddCss(css, "utf-8", true); var cssResolverPipeline = new CssResolverPipeline( cssResolver, htmlPipeline ); var worker = new XMLWorker(cssResolverPipeline, true); var parser = new XMLParser(worker); using (var stringReader = new StringReader(xHtml)) { parser.Parse(stringReader); } } } }
public static void GeneratePdf(IList<SqlPdfFormat> data, string pdfFullFileName, string cssFullFileName) { data.OrderBy(x => x.SoldDate); DateTime oldDate = data[0].SoldDate; StringBuilder sb = new StringBuilder(); decimal subSum = 0; decimal totalSum = 0; sb.Append("<table>"); sb.Append("<tr>"); sb.Append("<th colspan=\"5\" class=\"title\">Aggregated Sales Report </th>"); sb.Append("</tr>"); sb.Append("<tr class=\"grayBack\" >"); sb.AppendFormat("<th colspan=\"5\" class=\"date\">Date: {0}</th>", oldDate.ToShortDateString()); sb.Append("</tr>"); sb.Append("<tr class=\"grayBack\" >"); sb.Append("<th class=\"th\">Product</th>"); sb.Append("<th class=\"th\">Quantity</th>"); sb.Append("<th class=\"th\">Unit Price</th>"); sb.Append("<th class=\"th\">Location</th>"); sb.Append("<th class=\"th\">Sum</th>"); sb.Append("</tr>"); for (int i = 0; i < data.Count; i++) { if (data[i].SoldDate > oldDate) { sb.Append("<tr>"); sb.AppendFormat("<td colspan=\"4\" class=\"sum\">Total sum for {0}: </td>", oldDate.ToShortDateString()); sb.AppendFormat("<td class=\"bold\">{0}</td>", subSum); sb.Append("</tr>"); oldDate = data[i].SoldDate; totalSum += subSum; subSum = 0; sb.Append("<tr class=\"grayBack\">"); sb.AppendFormat("<th colspan=\"5\" class=\"date\">Date: {0}</th>", oldDate.ToShortDateString()); sb.Append("</tr>"); sb.Append("<tr class=\"grayBack\">"); sb.Append("<th class=\"th\">Product</th>"); sb.Append("<th class=\"th\">Quantity</th>"); sb.Append("<th class=\"th\">Unit Price</th>"); sb.Append("<th class=\"th\">Location</th>"); sb.Append("<th class=\"th\">Sum</th>"); sb.Append("</tr>"); } subSum += data[i].Sum; sb.Append("<tr>"); sb.AppendFormat("<td>{0}</td>", data[i].ProductName); sb.AppendFormat("<td>{0}</td>", data[i].Quantity + " " + data[i].Measure); sb.AppendFormat("<td>{0}</td>", data[i].UnitPrice); sb.AppendFormat("<td>{0}</td>", data[i].SupermarketName); sb.AppendFormat("<td>{0}</td>", data[i].Sum); sb.Append("</tr>"); } sb.Append("<tr>"); sb.AppendFormat("<td colspan=\"4\" class=\"sum\">Total sum for {0}: </td>", oldDate.ToShortDateString()); sb.AppendFormat("<td class=\"bold\">{0}</td>", subSum); sb.Append("</tr>"); totalSum += subSum; sb.Append("<tr>"); sb.Append("<td colspan=\"4\" class=\"sum\">Grand Total: </td>"); sb.AppendFormat("<td class=\"bold\">{0}</td>", totalSum); sb.Append("</tr>"); sb.Append("</table>"); using (Document document = new Document()) { PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfFullFileName, FileMode.Create)); document.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); //change this to your CCS file location cssResolver.AddCssFile(cssFullFileName, true); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser p = new XMLParser(worker); //p.Parse((TextReader)File.OpenText(@"G:\Template.html")); p.Parse(new StringReader(sb.ToString())); } }