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 AddingALinkProvider() { Document doc = new Document(PageSize.A4); PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(TARGET + "columbus3.pdf", FileMode.Create)); doc.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetLinkProvider(new CustomLinkProvider()).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(); }