virtual public void AddTagProcessor() { tp.AddProcessor(tpi, new string[] { "addatag" }); ITagProcessor processor = tp.GetProcessor("addatag", ""); Assert.AreEqual(tpi, processor); }
public static byte[] Render(string html, List <string> cssFiles = null, Rectangle pageSize = null) { if (pageSize == null) { pageSize = PageSize.A4.Rotate(); } using (var stream = new MemoryStream()) { // create an iTextSharp Document which is an abstraction of a PDF but **NOT** a PDF using (var document = new Document(pageSize)) { // create a writer that's bound to our PDF abstraction and our stream using (var writer = PdfWriter.GetInstance(document, stream)) { // open the document for writing document.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); ITagProcessorFactory factory = Tags.GetHtmlTagProcessorFactory(); factory.AddProcessor(new CustomImageHTMLTagProcessor(), new string[] { "img" }); htmlContext.SetTagFactory(factory); var isAnyCssFiles = cssFiles != null && cssFiles.Count > 0; //create a cssresolver to apply css ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(!isAnyCssFiles); if (isAnyCssFiles) { foreach (var cssfile in cssFiles) { if (cssfile.StartsWith("http")) { cssResolver.AddCssFile(cssfile, true); } else { cssResolver.AddCssFile(System.Web.HttpContext.Current.Server.MapPath(cssfile), true); } } } //create and attach pipeline IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser xmlParser = new XMLParser(true, worker); using (var srHtml = new StringReader(html)) { xmlParser.Parse(srHtml); } // close document document.Close(); } } // get bytes from stream byte[] bytes = stream.ToArray(); bytes = AddPageNumbers(bytes, pageSize); // success return(bytes); } }