public byte[] GeneratePdf <T>(Action <PdfWriter, Document> configureSettings, T model = null, string viewName = null) where T : class { byte[] output; var document = Margins == null ? new Document() : new Document(Margins.PageSize, Margins.Left, Margins.Right, Margins.Top, Margins.Bottom); using (document) { using (var workStream = new MemoryStream()) { var writer = PdfWriter.GetInstance(document, workStream); writer.CloseStream = false; configureSettings?.Invoke(writer, document); document.Open(); var renderedView = Parser.RenderView(viewName, model, Templates); using (var reader = new StringReader(renderedView)) { var workerInstance = XMLWorkerHelper.GetInstance(); var tagProcessors = Tags.GetHtmlTagProcessorFactory(); if (!string.IsNullOrEmpty(ImageBasePath)) { tagProcessors.RemoveProcessor(HTML.Tag.IMG); tagProcessors.AddProcessor(new ImageTagProcessor(ImageBasePath), new[] { HTML.Tag.IMG }); } var htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(tagProcessors); var cssResolver = workerInstance.GetDefaultCssResolver(true); var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); var worker = new XMLWorker(pipeline, true); var parser = new XMLParser(worker); parser.Parse(reader); document.Close(); output = workStream.ToArray(); } } } return(output); }
public byte[] Render(string htmlText, string pageTitle, string linkCss, bool horizontal) { byte[] renderedBuffer; using (var outputMemoryStream = new MemoryStream()) { using (var pdfDocument = new Document(PageSize.A4, HorizontalMargin, HorizontalMargin, VerticalMargin, VerticalMargin)) { if (horizontal) { pdfDocument.SetPageSize(PageSize.A4.Rotate()); } PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDocument, outputMemoryStream); pdfWriter.CloseStream = false; pdfWriter.PageEvent = new PrintHeaderFooter { Title = pageTitle }; pdfDocument.Open(); // register all fonts in current computer FontFactory.RegisterDirectories(); // Set factories var htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); // Set css ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssResolver.AddCssFile(HttpContext.Current.Server.MapPath(linkCss), true); cssResolver.AddCss(".shadow {background-color: #ebdddd; }", true); //Export IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(pdfDocument, pdfWriter))); using (var xmlString = new StringReader(htmlText)) { var worker = new XMLWorker(pipeline, true); var xmlParse = new XMLParser(true, worker); xmlParse.Parse(xmlString); xmlParse.Flush(); } } renderedBuffer = new byte[outputMemoryStream.Position]; outputMemoryStream.Position = 0; outputMemoryStream.Read(renderedBuffer, 0, renderedBuffer.Length); } return(renderedBuffer); }
/* * (non-Javadoc) * * @see * com.itextpdf.tool.xml.ITagProcessor#endElement(com.itextpdf.tool.xml.Tag, * java.util.List, com.itextpdf.text.Document) */ public override IList <IElement> End(IWorkerContext ctx, Tag tag, IList <IElement> currentContent) { IDictionary <String, String> attributes = tag.Attributes; String src; attributes.TryGetValue(HTML.Attribute.SRC, out src); iTextSharp.text.Image img = null; IList <IElement> l = new List <IElement>(1); if (!string.IsNullOrEmpty(src)) { src = XMLUtil.UnescapeXML(src); src = src.Trim(); // check if the image was already added once try { if (logger.IsLogging(Level.TRACE)) { logger.Trace(String.Format(LocaleMessages.GetInstance().GetMessage(LocaleMessages.HTML_IMG_USE), src)); } try { img = new ImageRetrieve(GetHtmlPipelineContext(ctx).GetImageProvider()).RetrieveImage(src); } catch (NoImageProviderException) { img = new ImageRetrieve().RetrieveImage(src); } } catch (IOException e) { if (logger.IsLogging(Level.ERROR)) { logger.Error(String.Format(LocaleMessages.GetInstance().GetMessage(LocaleMessages.HTML_IMG_RETRIEVE_FAIL), src), e); } } catch (NoImageException e) { if (logger.IsLogging(Level.ERROR)) { logger.Error("", e); } } catch (NoCustomContextException e) { throw new RuntimeWorkerException(LocaleMessages.GetInstance().GetMessage(LocaleMessages.NO_CUSTOM_CONTEXT), e); } if (null != img) { try { HtmlPipelineContext htmlPipelineContext = GetHtmlPipelineContext(ctx); l.Add(GetCssAppliers().Apply(new Chunk((iTextSharp.text.Image)GetCssAppliers().Apply(img, tag, htmlPipelineContext), 0, 0, true), tag, htmlPipelineContext)); } catch (NoCustomContextException e) { throw new RuntimeWorkerException(e); } } } return(l); }
public byte[] GeneratePDF2(string name) { byte[] result; string Path = AppDomain.CurrentDomain.BaseDirectory; Path = Path.Substring(0, Path.Length - 10); var Pathcss = string.Format("{0}{1}", Path, "htmltoPdf\\Content\\bootstrap.min.css"); List <string> cssFile = new List <string>(); cssFile.Add(Pathcss); MemoryStream stream = null; string Html = html(); string ModifiedFileName = string.Empty; using (stream = new MemoryStream()) { Document pdfDoc = new Document(PageSize.A4, 60f, 60f, 50f, 40f); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream); writer.PageEvent = new NumPage(); pdfDoc.Open(); HtmlPipelineContext htmlcontext = new HtmlPipelineContext(null); htmlcontext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssResolver.AddCssFile(Pathcss, true); //cssFile.ForEach(x=>cssResolver.AddCssFile(x,true)); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlcontext, new PdfWriterPipeline(pdfDoc, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser xmlparser = new XMLParser(worker); xmlparser.Parse(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(Html))); pdfDoc.Close(); result = stream.GetBuffer(); //PdfReader reader = new PdfReader(stream); //PdfEncryptor.Encrypt(reader, new FileStream(ModifiedFileName, FileMode.Append), PdfWriter.STRENGTH128BITS, "", "", iTextSharp.text.pdf.PdfWriter.AllowPrinting); //reader.Close(); //return File(stream.ToArray(), "application/pdf", "Grid.pdf"); } return(result); }
/// <summary> /// Converts the specified view name and data model to a PDF. /// </summary> /// <param name="viewName">The name of the view to convert to PDF.</param> /// <param name="dataModel">The data model to use.</param> /// <param name="pageSize">The size of the page to create.</param> /// <returns>The raw data of the PDF as a byte array.</returns> protected virtual byte[] PdfBytes(string viewName, object dataModel, Rectangle pageSize) { if (String.IsNullOrEmpty(viewName)) { viewName = ControllerContext.RouteData.Values["action"].ToString(); } using (var document = new Document()) { if (pageSize == null) { pageSize = PageSize.LETTER; } document.SetPageSize(pageSize); using (var ms = new MemoryStream()) { PdfWriter writer = PdfWriter.GetInstance(document, ms); writer.CloseStream = false; document.Open(); using (var sw = new StringWriter()) { ViewData.Model = dataModel; var viewEngine = (ICompositeViewEngine)HttpContext.RequestServices.GetService(typeof(ICompositeViewEngine)); var contextAccessor = (IActionContextAccessor)HttpContext.RequestServices.GetService(typeof(IActionContextAccessor)); var viewResult = viewEngine.FindView(contextAccessor.ActionContext, viewName, true); var viewContext = new ViewContext(contextAccessor.ActionContext, viewResult.View, ViewData, TempData, sw, new HtmlHelperOptions()); var viewTask = viewResult.View.RenderAsync(viewContext); viewTask.Wait(); using (var reader = new StringReader(sw.ToString())) { var tagProcessors = (DefaultTagProcessorFactory)Tags.GetHtmlTagProcessorFactory(); tagProcessors.RemoveProcessor(HTML.Tag.IMG); // remove the default processor tagProcessors.AddProcessor(HTML.Tag.IMG, new EmbeddedImageTagProcessor()); // use our new processor CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(XMLWorkerHelper.GetInstance().GetDefaultCSS()); var cssResolver = new StyleAttrCSSResolver(cssFiles); var charset = Encoding.UTF8; var hpc = new HtmlPipelineContext(new CssAppliersImpl(new XMLWorkerFontProvider())); hpc.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(tagProcessors); // inject the tagProcessors var htmlPipeline = new HtmlPipeline(hpc, new PdfWriterPipeline(document, writer)); var pipeline = new CssResolverPipeline(cssResolver, htmlPipeline); var worker = new XMLWorker(pipeline, true); var xmlParser = new XMLParser(true, worker, charset); //XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader); xmlParser.Parse(reader); document.Close(); return(ms.ToArray()); } } } } }
public override IList <IElement> End(IWorkerContext ctx, Tag tag, IList <IElement> currentContent) { try { IDictionary <string, string> attributes = tag.Attributes; string src; if (!attributes.TryGetValue(HTML.Attribute.SRC, out src)) { return(new List <IElement>(1)); } if (string.IsNullOrEmpty(src)) { return(new List <IElement>(1)); } if (src.StartsWith("data:image/", StringComparison.InvariantCultureIgnoreCase)) { // data:[][;charset=][;base64], string base64Data = src.Substring(src.IndexOf(",") + 1); byte[] imagedata = Convert.FromBase64String(base64Data); iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagedata); List <IElement> list = new List <IElement>(); HtmlPipelineContext htmlPipelineContext = GetHtmlPipelineContext(ctx); list.Add( GetCssAppliers().Apply( new Chunk( (iTextSharp.text.Image)GetCssAppliers().Apply(image, tag, htmlPipelineContext) , 0 , 0 , true ) , tag , htmlPipelineContext ) //GetCssAppliers ); //list.Add return(list); }//if else { return(base.End(ctx, tag, currentContent)); }//else } catch (Exception ex) { LogTool.SaveLogMessage(ex, "CustomImageTagProcessor"); } return(base.End(ctx, tag, currentContent)); } //End
private static bool GeneratePdf(string htmlText, string fileFullName, string watermarkText, PdfFont font) { if (string.IsNullOrEmpty(htmlText)) { return(false); } htmlText = "<p>" + htmlText + "</p>"; var document = new Document(); var writer = PdfWriter.GetInstance(document, new FileStream(fileFullName, FileMode.Create)); if (!string.IsNullOrEmpty(watermarkText)) { writer.PageEvent = new PdfWatermarkPageEvent(watermarkText); } document.Open(); //pipeline var htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); htmlContext.SetImageProvider(new ChannelImageProvider()); htmlContext.SetCssAppliers(new CssAppliersImpl(GetFontProviderBy(font))); var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); //parse byte[] data = Encoding.UTF8.GetBytes(htmlText); var msInput = new MemoryStream(data); var worker = new XMLWorker(pipeline, true); var parser = new XMLParser(worker); parser.Parse(msInput); //XMLWorkerHelper.GetInstance().ParseXHtml(..) var pdfDest = new PdfDestination(PdfDestination.XYZ, 0, document.PageSize.Height, 1f); var action = PdfAction.GotoLocalPage(1, pdfDest, writer); writer.SetOpenAction(action); //close document.Close(); msInput.Close(); return(true); }
/** * @param d the ElementHandler * @param inp the Stream * @throws IOException if something went seriously wrong with IO. */ public void ParseXHtml(IElementHandler d, Stream inp, Encoding charset) { CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(GetDefaultCSS()); StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles); HtmlPipelineContext hpc = new HtmlPipelineContext(); hpc.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(GetDefaultTagProcessorFactory()); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(hpc, new ElementHandlerPipeline(d, null))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser p = new XMLParser(true, worker, charset); p.Parse(inp); }
/* * (non-Javadoc) * * @see * com.itextpdf.tool.xml.ITagProcessor#endElement(com.itextpdf.tool.xml.Tag, * java.util.List, com.itextpdf.text.Document) */ public override IList <IElement> End(IWorkerContext ctx, Tag tag, IList <IElement> currentContent) { HtmlCell cell = new HtmlCell(); IList <IElement> l = new List <IElement>(1); foreach (IElement e in currentContent) { cell.AddElement(e); } try { HtmlPipelineContext htmlPipelineContext = GetHtmlPipelineContext(ctx); l.Add(new HtmlCellCssApplier().Apply(cell, tag, htmlPipelineContext, htmlPipelineContext)); } catch (NoCustomContextException e1) { throw new RuntimeWorkerException(LocaleMessages.GetInstance().GetMessage(LocaleMessages.NO_CUSTOM_CONTEXT), e1); } return(l); }
/** * Parses the xml data. This method configures the XMLWorker to parse * (X)HTML/CSS and accept unknown tags. Writes the output in the given * PdfWriter with the given document. * * @param writer the PdfWriter * @param doc the Document * @param inp the reader * @throws IOException thrown when something went wrong with the IO */ virtual public void ParseXHtml(PdfWriter writer, Document doc, TextReader inp) { CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(GetDefaultCSS()); StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles); HtmlPipelineContext hpc = new HtmlPipelineContext(null); hpc.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(GetDefaultTagProcessorFactory()); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(hpc, new PdfWriterPipeline(doc, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser p = new XMLParser(); p.AddListener(worker); p.Parse(inp); }
virtual public void SetUp() { body = new Tag("body", new Dictionary <String, String>()); table = new Tag("table", new Dictionary <String, String>()); row = new Tag("tr", new Dictionary <String, String>()); cell = new Tag("td", new Dictionary <String, String>()); config = new HtmlPipelineContext(null); calc = new WidthCalculator(); LoggerFactory.GetInstance().SetLogger(new SysoLogger(3)); body.AddChild(table); table.Parent = body; table.AddChild(row); row.Parent = table; row.AddChild(cell); cell.Parent = row; }
virtual public void SetUp() { LoggerFactory.GetInstance().SetLogger(new SysoLogger(3)); cssFiles = new CssFilesImpl(); String path = RESOURCES + @"\css\test.css"; path = path.Substring(0, path.LastIndexOf("test.css")); FileRetrieveImpl r = new FileRetrieveImpl(new String[] { path }); StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles, r); HtmlPipelineContext hpc = new HtmlPipelineContext(null); hpc.SetAcceptUnknown(false).AutoBookmark(true).SetTagFactory(Tags.GetHtmlTagProcessorFactory()); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(hpc, null)); XMLWorker worker = new XMLWorker(pipeline, true); p = new XMLParser(worker); }
public static byte[] WriteHtmlToPdf(string htmlString, string css) { byte[] bytes; //Boilerplate iTextSharp setup here //Create a stream that we can write to, in this case a MemoryStream using (var ms = new MemoryStream()) { //Create an iTextSharp Document which is an abstraction of a PDF but **NOT** a PDF using (var doc = new Document()) { //Create a writer that's bound to our PDF abstraction and our stream using (var writer = PdfWriter.GetInstance(doc, ms)) { doc.Open(); var tagProcessorFactory = Tags.GetHtmlTagProcessorFactory(); var htmlPipelineContext = new HtmlPipelineContext(null); htmlPipelineContext.SetTagFactory(tagProcessorFactory); var pdfWriterPipeline = new PdfWriterPipeline(doc, 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 sr = new StringReader(htmlString)) { parser.Parse(sr); //XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, sr); } doc.Close(); } bytes = ms.ToArray(); } return(bytes); } }
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(); }
public static void ServePdfEmbeddedImages(string url) { using (var doc = new Document(PageSize.LETTER)) { var writer = PdfWriter.GetInstance(doc, HttpContext.Current.Response.OutputStream); writer.InitialLeading = 12.5f; doc.Open(); string lastPart = ""; string[] parts = url.Split('='); if (parts.Count() > 2) { lastPart = "_" + parts[parts.Count() - 2]; } HttpContext.Current.Response.ContentType = "application/pdf"; HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=Alert" + lastPart + ".pdf"); HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); WebClient web = new WebClient(); var html = web.DownloadString(url); var tagProcessors = (DefaultTagProcessorFactory)Tags.GetHtmlTagProcessorFactory(); tagProcessors.RemoveProcessor(HTML.Tag.IMG); // remove the default processor tagProcessors.AddProcessor(HTML.Tag.IMG, new CustomImageTagProcessor()); // use our new processor CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(XMLWorkerHelper.GetInstance().GetDefaultCSS()); var cssResolver = new StyleAttrCSSResolver(cssFiles); cssResolver.AddCss(@"code { padding: 2px 4px; } img { padding: 4px 8px; }", "utf-8", true); var charset = Encoding.UTF8; var hpc = new HtmlPipelineContext(new CssAppliersImpl(new XMLWorkerFontProvider())); hpc.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(tagProcessors); // inject the tagProcessors var htmlPipeline = new HtmlPipeline(hpc, new PdfWriterPipeline(doc, writer)); var pipeline = new CssResolverPipeline(cssResolver, htmlPipeline); var worker = new XMLWorker(pipeline, true); var xmlParser = new XMLParser(true, worker, charset); xmlParser.Parse(new StringReader(html)); HttpContext.Current.Response.Write(doc); HttpContext.Current.Response.End(); } //Process.Start("test.pdf"); }
protected byte[] RenderHtmlToPDF(string Html) { // http://stackoverflow.com/questions/36180131/using-itextsharp-xmlworker-to-convert-html-to-pdf-and-write-text-vertically // http://stackoverflow.com/questions/20488045/change-default-font-and-fontsize-in-pdf-using-itextsharp Document document = new Document(PageSize.A4, 50f, 30f, 40f, 90f); if (Html.Contains("class=\"landscape\"")) { document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate()); } MemoryStream stream = new MemoryStream(); TextReader reader = new StringReader(Html); PdfWriter writer = PdfWriter.GetInstance(document, stream); document.AddTitle("muster ag"); XMLWorkerFontProvider fonts = new XMLWorkerFontProvider(); CssAppliers appliers = new CssAppliersImpl(fonts); HtmlPipelineContext context = new HtmlPipelineContext(appliers); context.SetAcceptUnknown(true); context.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); PdfWriterPipeline pdfpipeline = new PdfWriterPipeline(document, writer); HtmlPipeline htmlpipeline = new HtmlPipeline(context, pdfpipeline); var resolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); resolver.AddCssFile(Server.MapPath("~/Content/inv.pdf.css"), true); CssResolverPipeline csspipeline = new CssResolverPipeline(resolver, htmlpipeline); XMLWorker worker = new XMLWorker(csspipeline, true); XMLParser parser = new XMLParser(worker); document.Open(); parser.Parse(reader); worker.Close(); document.Close(); return(stream.ToArray()); }
/// <summary> /// CREATE A PDF FILE FROM BOTH VALID HTML AND CSS SOURCES /// </summary> /// <param name="htmlContent">A Well Formed html Document. IMAGE PATH MUST BE LOADED AT RUNTIME. </param> /// <param name="cssPath">Path to a valid css file</param> /// <param name="resultsFilePath">Output path to the resulting pdf</param> public static void GetPDFFile(string htmlContent, string cssPath, string resultsFilePath) { //----------------------------------------------- // INICIAR VARIABLES //----------------------------------------------- List <string> cssFiles = new List <string>(); cssFiles.Add(cssPath); var output = new MemoryStream(); var input = new MemoryStream(Encoding.UTF8.GetBytes(htmlContent)); var document = new Document(); var writer = PdfWriter.GetInstance(document, output); writer.CloseStream = false; document.Open(); //----------------------------------------------- // AÑADIR Y ANALIZAR CSS + HTML //----------------------------------------------- var htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(iTextSharp.tool.xml.html.Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssFiles.ForEach(i => cssResolver.AddCssFile(i, 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(input); document.Close(); output.Position = 0; //----------------------------------------------- // GUARDAR ARCHIVO //----------------------------------------------- using (FileStream file = new FileStream(resultsFilePath, FileMode.Create, FileAccess.Write)) { output.WriteTo(file); } }
private void CreatePdfFromHtmlString(string HtmlTemplate, string DestinationPath) { Document doc = new Document(); var fontFile = Server.MapPath("~/fonts/ARIALUNI.ttf"); try { var FS = new System.IO.FileStream(DestinationPath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None); var document = new Document(); var writer = PdfWriter.GetInstance(document, FS); document.Open(); var cssResolver = new StyleAttrCSSResolver(); var fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS); fontProvider.Register(fontFile); var cssAppliers = new CssAppliersImpl(fontProvider); var htmlContext = new HtmlPipelineContext(cssAppliers); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); var pdf = new PdfWriterPipeline(document, writer); var html = new HtmlPipeline(htmlContext, pdf); var css = new CssResolverPipeline(cssResolver, html); var worker = new XMLWorker(css, true); var p = new XMLParser(worker); var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(HtmlTemplate)); var sr = new StreamReader(ms); p.Parse(sr); document.Close(); } catch (Exception e) { throw; } }
private XMLWorker CreateXmlWorker(Document doc, PdfWriter writer) { var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true); cssResolver.AddCss(content: css, isPersistent: true); var htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); htmlContext.SetImageProvider(imageProvider); var pdfPipeline = new PdfWriterPipeline(doc, writer); var htmlPipeline = new HtmlPipeline(htmlContext, pdfPipeline); var cssPipeline = new CssResolverPipeline(cssResolver, htmlPipeline); var worker = new XMLWorker(cssPipeline, true); return(worker); }
private void processHtml(IElementHandler elementsHandler) { var cssResolver = new StyleAttrCSSResolver(); if (CssFilesPath != null && CssFilesPath.Any()) { foreach (var cssFile in CssFilesPath) { cssResolver.AddCss(XmlWorkerUtils.GetCssFile(cssFile)); } } if (!string.IsNullOrEmpty(InlineCss)) { cssResolver.AddCss(InlineCss, "utf-8", true); } var htmlContext = new HtmlPipelineContext(new CssAppliersImpl(new UnicodeFontProvider(DefaultFont))); if (!string.IsNullOrEmpty(ImagesPath)) { htmlContext.SetImageProvider(new ImageProvider { ImagesPath = ImagesPath }); } htmlContext.CharSet(Encoding.UTF8); var tagsProcessorFactory = (DefaultTagProcessorFactory)Tags.GetHtmlTagProcessorFactory(); if (PdfElement != null) { tagsProcessorFactory.AddProcessor("totalpagesnumber", new TotalPagesNumberXmlWorkerProcessor(PdfElement)); } htmlContext.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(tagsProcessorFactory); var pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new ElementHandlerPipeline(elementsHandler, null))); var worker = new XMLWorker(pipeline, parseHtml: true); var parser = new XMLParser(); parser.AddListener(worker); parser.Parse(new StringReader(Html)); }
/* (non-Javadoc) * @see com.itextpdf.tool.xml.ITagProcessor#endElement(com.itextpdf.tool.xml.Tag, java.util.List, com.itextpdf.text.Document) */ public override IList <IElement> End(IWorkerContext ctx, Tag tag, IList <IElement> currentContent) { List <IElement> l = new List <IElement>(1); if (currentContent.Count > 0) { IList <IElement> currentContentToParagraph = CurrentContentToParagraph(currentContent, true, true, tag, ctx); foreach (IElement p in currentContentToParagraph) { ((Paragraph)p).Role = (getHeaderRole(GetLevel(tag))); } ParentTreeUtil pt = new ParentTreeUtil(); try { HtmlPipelineContext context = GetHtmlPipelineContext(ctx); bool oldBookmark = context.AutoBookmark(); if (pt.GetParentTree(tag).Contains(HTML.Tag.TD)) { context.AutoBookmark(false); } if (context.AutoBookmark()) { Paragraph title = new Paragraph(); foreach (IElement w in currentContentToParagraph) { title.Add(w); } l.Add(new WriteH(context, tag, this, title)); } context.AutoBookmark(oldBookmark); } catch (NoCustomContextException e) { if (LOGGER.IsLogging(Level.ERROR)) { LOGGER.Error(LocaleMessages.GetInstance().GetMessage(LocaleMessages.HEADER_BM_DISABLED), e); } } l.AddRange(currentContentToParagraph); } return(l); }
protected override void MakePdf(string outPdf) { Document doc = new Document(PageSize.A3.Rotate()); PdfWriter pdfWriter = PdfWriter.GetInstance(doc, new FileStream(outPdf, FileMode.Create)); pdfWriter.CreateXmpMetadata(); doc.SetMargins(200, 200, 0, 0); doc.Open(); CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add( XMLWorkerHelper.GetCSS( File.OpenRead(RESOURCES + Path.DirectorySeparatorChar + testPath + Path.DirectorySeparatorChar + testName + Path.DirectorySeparatorChar + "complexDiv_files" + Path.DirectorySeparatorChar + "main.css"))); cssFiles.Add( XMLWorkerHelper.GetCSS( File.OpenRead(RESOURCES + Path.DirectorySeparatorChar + testPath + Path.DirectorySeparatorChar + testName + Path.DirectorySeparatorChar + "complexDiv_files" + Path.DirectorySeparatorChar + "widget082.css"))); StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles); HtmlPipelineContext hpc = new HtmlPipelineContext( new CssAppliersImpl(new XMLWorkerFontProvider(RESOURCES + @"\tool\xml\examples\fonts"))); hpc.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(Tags.GetHtmlTagProcessorFactory()); hpc.SetImageProvider(new SampleTestImageProvider()); hpc.SetPageSize(doc.PageSize); HtmlPipeline htmlPipeline = new HtmlPipeline(hpc, new PdfWriterPipeline(doc, pdfWriter)); IPipeline pipeline = new CssResolverPipeline(cssResolver, htmlPipeline); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser p = new XMLParser(true, worker, Encoding.GetEncoding("UTF-8")); p.Parse(File.OpenRead(inputHtml), Encoding.GetEncoding("UTF-8")); //ICC_Profile icc = ICC_Profile.getInstance(ComplexDiv01Test.class.getResourceAsStream("sRGB Color Space Profile.icm")); //pdfWriter.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc); doc.Close(); }
public byte[] GetPdfBytesArray(string html) { var tempHtml = html; var cssLinks = html.GetCssLinks().ToList(); if (cssLinks.Count > 0) { tempHtml = tempHtml.RemoveCssLink(); } tempHtml = tempHtml.FormatImageLinks(); using (var ms = new MemoryStream()) using (var document = new Document(DocPageSize, 10, 10, 5, 0)) { using (var writer = PdfWriter.GetInstance(document, ms)) { document.Open(); using (TextReader xmlString = new StringReader(tempHtml)) { //Set factories var htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); //Set css var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); foreach (var item in cssLinks) { cssResolver.AddCssFile(item, true); } //Export IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer))); var worker = new XMLWorker(pipeline, true); var xmlParse = new XMLParser(true, worker); xmlParse.Parse(xmlString); xmlParse.Flush(); } document.Close(); } return(ms.ToArray()); } }
virtual public void SetUp() { LoggerFactory.GetInstance().SetLogger(new SysoLogger(3)); root = new Tag("body"); p = new Tag("p"); ul = new Tag("ul"); first = new Tag("li"); last = new Tag("li"); single = new ListItem("Single"); start = new ListItem("Start"); end = new ListItem("End"); listWithOne = new List <IElement>(); listWithTwo = new List <IElement>(); orderedUnorderedList = new OrderedUnorderedList(); CssAppliersImpl cssAppliers = new CssAppliersImpl(); orderedUnorderedList.SetCssAppliers(cssAppliers); workerContextImpl = new WorkerContextImpl(); HtmlPipelineContext context2 = new HtmlPipelineContext(cssAppliers); workerContextImpl.Put(typeof(HtmlPipeline).FullName, context2); root.AddChild(p); root.AddChild(ul); ul.AddChild(first); ul.AddChild(last); p.CSS["font-size"] = "12pt"; p.CSS["margin-top"] = "12pt"; p.CSS["margin-bottom"] = "12pt"; new ParagraphCssApplier(cssAppliers).Apply(new Paragraph("paragraph"), p, context2); first.CSS["margin-top"] = "50pt"; first.CSS["padding-top"] = "25pt"; first.CSS["margin-bottom"] = "50pt"; first.CSS["padding-bottom"] = "25pt"; last.CSS["margin-bottom"] = "50pt"; last.CSS["padding-bottom"] = "25pt"; listWithOne.Add(single); listWithTwo.Add(start); listWithTwo.Add(end); }
public override IList <IElement> End(IWorkerContext ctx, Tag tag, IList <IElement> currentContent) { var src = tag.Attributes["src"]; var bitmap = (Bitmap)Resources.ResourceManager.GetObject(src); if (bitmap == null) { throw new RuntimeWorkerException("No resource with the name: " + src); } var converter = new ImageConverter(); var image = Image.GetInstance((byte[])converter.ConvertTo(bitmap, typeof(byte[]))); HtmlPipelineContext htmlPipelineContext = this.GetHtmlPipelineContext(ctx); return(new List <IElement>(1) { this.GetCssAppliers().Apply( new Chunk((Image)this.GetCssAppliers().Apply(image, tag, htmlPipelineContext), 0f, 0f, true), tag, htmlPipelineContext) }); }
public void SetUp() { cells = new List <Element>(); tag = new Tag("td", new Dictionary <String, String>()); basicPara = new NoNewLineParagraph(); basic = new Chunk("content"); cell = new HtmlCell(); applier = new HtmlCellCssApplier(); LoggerFactory.GetInstance().SetLogger(new SysoLogger(3)); Tag parent = new Tag("tr"); parent.Parent = new Tag("table"); tag.Parent = parent; basicPara.Add(basic); cell.AddElement(basicPara); cells.Add(cell); config = new HtmlPipelineContext(null); }
private static void _add_to_table(Guid applicationId, HttpContext context, PdfPTable mainTable, StyleAttrCSSResolver cssResolver, WikiPDFText text, Font font, PdfPCell cell = null) { if (cell == null) { cell = new PdfPCell(); } cell.Border = 0; cell.HorizontalAlignment = Element.ALIGN_JUSTIFIED; cell.RunDirection = text.IsRTL ? PdfWriter.RUN_DIRECTION_RTL : PdfWriter.RUN_DIRECTION_LTR; cell.SetLeading(0, 2); itsXmlHtml.DefaultTagProcessorFactory tagProcessors = (itsXmlHtml.DefaultTagProcessorFactory)itsXmlHtml.Tags.GetHtmlTagProcessorFactory(); tagProcessors.RemoveProcessor(itsXmlHtml.HTML.Tag.IMG); // remove the default processor tagProcessors.AddProcessor(itsXmlHtml.HTML.Tag.IMG, new CustomImageTagProcessor(applicationId)); // use our new processor //tagProcessors.AddProcessor(itsXmlHtml.HTML.Tag.TABLE, new TableTagProcessor()); HtmlPipelineContext htmlContext = new HtmlPipelineContext(new itsXmlHtml.CssAppliersImpl(new IranSansFontProvider(font))); htmlContext.SetImageProvider(new ImageProvider()); htmlContext.CharSet(Encoding.UTF8); htmlContext.SetAcceptUnknown(true).AutoBookmark(true).SetTagFactory(tagProcessors); ElementsCollector elementsHandler = new ElementsCollector(); CssResolverPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new ElementHandlerPipeline(elementsHandler, null))); itsXml.XMLWorker worker = new itsXml.XMLWorker(pipeline, parseHtml: true); XMLParser parser = new XMLParser(true, worker, Encoding.UTF8); parser.Parse(new StringReader(text.Text)); cell.AddElement(elementsHandler.Paragraph); mainTable.AddCell(cell); }
public static byte[] CreatePDF(string htmlContent, string cssPath) { using (MemoryStream stream = new System.IO.MemoryStream()) { Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream); pdfDoc.Open(); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssResolver.AddCssFile(cssPath, true); IPipeline pipeline = new CssResolverPipeline(cssResolver, new HtmlPipeline(htmlContext, new PdfWriterPipeline(pdfDoc, writer))); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser parser = new XMLParser(worker); parser.Parse(new MemoryStream(Encoding.UTF8.GetBytes(htmlContent))); pdfDoc.Close(); return(stream.GetBuffer()); } }
public ActionResult generaPDF() { using (MemoryStream stream = new MemoryStream()) { StringWriter stringWriter = new StringWriter(); System.Web.HttpContext.Current.Response.Clear(); ViewEngineResult viewEngineResult = ViewEngines.Engines.FindView(controllerContext, vistaReporte, null); ViewContext viewContext = new ViewContext(controllerContext, viewEngineResult.View, new ViewDataDictionary(model), temporalData, stringWriter); viewEngineResult.View.Render(viewContext, stringWriter); String HtmlString = stringWriter.ToString(); List <string> cssFiles = new List <string>(); cssFiles.Add("~/Content/Styles/Site/Site.css"); cssFiles.Add("~/Content/Styles/Account/all.css"); cssFiles.Add("~/Content/Librerias/JQuery.UI/jquery-ui.theme.css"); cssFiles.Add("~/Content/Librerias/JQuery.UI/jquery-ui.structure.css"); cssFiles.Add("~/Content/Styles/Site/ReportesPDF.css"); Document Pdf = new Document(PageSize.A4); StringReader stringReader = new StringReader(HtmlString); PdfWriter write = PdfWriter.GetInstance(Pdf, stream); write.CloseStream = false; Pdf.Open(); HtmlPipelineContext htmlPipelineContext = new HtmlPipelineContext(null); htmlPipelineContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver iCSSResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); cssFiles.ForEach(x => iCSSResolver.AddCssFile(System.Web.HttpContext.Current.Server.MapPath(x), true)); IPipeline pipeline = new CssResolverPipeline(iCSSResolver, new HtmlPipeline(htmlPipelineContext, new PdfWriterPipeline(Pdf, write))); XMLWorker xMLWorkerHelper = new XMLWorker(pipeline, true); XMLParser xMLParse = new XMLParser(xMLWorkerHelper); xMLParse.Parse(new MemoryStream(Encoding.UTF8.GetBytes(HtmlString))); Pdf.Close(); using (FileStream fileStream = System.IO.File.Create(ruta + nombreDeReporte + ".pdf")) { fileStream.Write(stream.ToArray(), 0, stream.ToArray().Length); } return(File(ruta + nombreDeReporte + ".pdf", System.Net.Mime.MediaTypeNames.Application.Octet, nombreDeReporte + ".pdf")); } }
/* (non-Javadoc) * @see com.itextpdf.tool.xml.ITagProcessor#content(com.itextpdf.tool.xml.Tag, java.lang.String) */ public override IList <IElement> Content(IWorkerContext ctx, Tag tag, String content) { List <Chunk> sanitizedChunks = HTMLUtils.Sanitize(content, false); List <IElement> l = new List <IElement>(1); NoNewLineParagraph sanitizedNoNewLineParagraph = new NoNewLineParagraph(); try { HtmlPipelineContext htmlPipelineContext = GetHtmlPipelineContext(ctx); foreach (Chunk sanitized in sanitizedChunks) { sanitizedNoNewLineParagraph.Add(GetCssAppliers().Apply(sanitized, tag, htmlPipelineContext)); } if (sanitizedNoNewLineParagraph.Count > 0) { l.Add(GetCssAppliers().Apply(sanitizedNoNewLineParagraph, tag, htmlPipelineContext)); } } catch (NoCustomContextException e) { throw new RuntimeWorkerException(e); } return(l); }