I am parsing HTML with some images inside this.
These images are stored as an embedded resource, not in the file system.
as I know, I need to install a custom image provider in the HtmlPipelineContext, and this provider should get the image path or itextsharp image.
The question is, does anyone know which abstract image provider method I need to implement? And How?
this is my code:
var list = new List<string> { text }; byte[] renderedBuffer; using (var outputMemoryStream = new MemoryStream()) { using ( var pdfDocument = new Document(PageSize.A4, 30, 30, 30, 30)) { var pdfWriter = PdfWriter.GetInstance(pdfDocument, outputMemoryStream); pdfWriter.CloseStream = false; pdfDocument.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(new CssAppliersImpl()); htmlContext.SetImageProvider(new MyImageProvider()); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); CssResolverPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(pdfDocument, pdfWriter))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser p = new XMLParser(worker); foreach (var htmlText in list) { using (var htmlViewReader = new StringReader(htmlText)) { p.Parse(htmlViewReader); } } } renderedBuffer = new byte[outputMemoryStream.Position]; outputMemoryStream.Position = 0; outputMemoryStream.Read(renderedBuffer, 0, renderedBuffer.Length); }
Thanks in advance.
source share