private byte[] InternalGeneratePdf <T>(Action <PdfWriter, Document> configureSettings, T model = null, string viewName = null, List <BasePageSnippet> pageSnippets = null, Margins margins = 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; if (pageSnippets != null) { var aggregateHelper = new AggregateHelper(pageSnippets, InternalGeneratePdf); writer.PageEvent = aggregateHelper; } 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 void ChooseCustomersWhoseTotalOrderSumIsBiggerThanTest() { //arrange int expected = 38; //act int actual = XMLWorker.ChooseCustomersWhoseTotalOrderSumIsBiggerThan(10000); //assert Assert.AreEqual(expected, actual); }
static RootLibraryElement Read(string filePath) { var root = new RootLibraryElement(); var worker = new XMLWorker(); foreach (var el in worker.ReadXMLFromFile(filePath)) { root.Elements.Add(TryParse(el)); } return(root); }
/*-------------------------------------------------------- * Exportar um HTML fornecido. * - O HTML. * - Nome do Arquivo. * - Link para o CSS. * ----------------------------------------------------------*/ public static void Export(string html, string fileName, string linkCss) { ////reset response HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/pdf"; ////define pdf filename HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + fileName); //Gera o arquivo PDF using (var document = new Document(PageSize.A4, 40, 40, 40, 40)) { //html = FormatImageLinks(html); //define o output do HTML var memStream = new MemoryStream(); TextReader xmlString = new StringReader(html); PdfWriter writer = PdfWriter.GetInstance(document, memStream); writer.PageEvent = new PDFWriteEvents(); document.Open(); //Registra todas as fontes no computador cliente. 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); // Exporta 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(); document.Dispose(); HttpContext.Current.Response.BinaryWrite(memStream.ToArray()); } HttpContext.Current.Response.End(); HttpContext.Current.Response.Flush(); }
public static float getSalaryList(string xmlName) { XMLWorker xmlWorker = new XMLWorker(xmlName); EmployeeRepository empRep = xmlWorker.readXML(); float sumSal = 0; for (int i = 0; i < empRep.employees.Count(); i++) { sumSal += empRep.employees[i].salary; } return(sumSal); }
public byte[] GeneratePdfOutput(ControllerContext context, object model = null, string viewName = null, Action <PdfWriter, Document> configureSettings = null) { if (viewName == null) { viewName = context.RouteData.GetRequiredString("action"); } context.Controller.ViewData.Model = model; byte[] output; using (var document = new Document()) { using (var workStream = new MemoryStream()) { PdfWriter writer = PdfWriter.GetInstance(document, workStream); writer.CloseStream = false; if (configureSettings != null) { configureSettings(writer, document); } document.Open(); //base64 image support : https://rupertmaier.wordpress.com/2014/08/22/creating-a-pdf-with-an-image-in-itextsharp/ var tagProcessors = (DefaultTagProcessorFactory)Tags.GetHtmlTagProcessorFactory(); tagProcessors.RemoveProcessor(HTML.Tag.IMG); tagProcessors.AddProcessor(HTML.Tag.IMG, new CustomImageTagProcessor()); var 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); var htmlPipeline = new HtmlPipeline(hpc, new PdfWriterPipeline(document, writer)); var cssPipeline = new CssResolverPipeline(cssResolver, htmlPipeline); var worker = new XMLWorker(cssPipeline, true); var xmlParser = new XMLParser(true, worker, charset); using (var reader = new StringReader(RenderRazorView(context, viewName))) { xmlParser.Parse(reader); document.Close(); output = workStream.ToArray(); } } } return(output); }
public void WriteToXMLFileCreateFile() { var worker = new XMLWorker(); if (File.Exists(@"C:\XMLFileWrite.xml")) { File.Delete(@"C:\XMLFileWrite.xml"); } worker.WriteToXMLFile(root, @"C:\XMLFileWrite.xml"); Assert.IsTrue(File.Exists(@"C:\XMLFileWrite.xml")); }
static void Main(string[] args) { XMLWorker worker = new XMLWorker(); // string path = @"C:\Users\abc\Desktop\ConsoleApplication1\ConsoleApplication1\XMLFile.xml"; XmlNodeList nodeList = worker.GetElementsName(path); for (int i = 0; i < nodeList.Count; i++) { Console.WriteLine(nodeList[i].InnerText); } Console.ReadLine(); }
//public FileResult GetEligibilityForm(string id = "0") public ActionResult GetMDTFormPDF(long id = 0, bool isdoc = false) { var fileBytes = new byte[0]; if (isdoc) { var attachDetails = FactoryInstance.Instance.CreateInstance <Reporting>().GetMDTAttachmentById(id); fileBytes = attachDetails.AttachmentFileByte; } else { var result = FactoryInstance.Instance.CreateInstance <Reporting>().GetMDTReportById(id, "pdf"); // Render the view xml to a string, then parse that string into an XML dom. string html = this.RenderActionResultToString(this.View("MDTFormPdfView", result)); var output = new MemoryStream(); using (var doc = new Document(PageSize.A4)) { var writer = PdfWriter.GetInstance(doc, output); PDFBackgroundHelper pageEventHelper = new PDFBackgroundHelper(); writer.PageEvent = pageEventHelper; writer.CloseStream = false; doc.Open(); 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; }", "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)); } output.Position = 0; fileBytes = output.ToArray(); } // Send the binary data to the browser. return(new BinaryContentResult(fileBytes, "application/pdf")); // return File(fileBytes, "application/pdf", "MDT form of" + result.Name + ".pdf"); }
public byte[] GeneratePdf <T>(Action <PdfWriter, Document> configureSettings, T model = null, string viewName = null) where T : class { ControllerContext.Controller.ViewData.Model = model; 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(); using (var reader = new StringReader(RenderRazorView(viewName))) { 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); }
static void Write() { var root = new RootLibraryElement(); var book = new BookLibraryElement(); book.Name = "TestBook"; book.PageCount = 34; book.PublicationPlace = "Karaganda"; book.PublisherName = "Fgfgf"; book.PublishYear = 1943; book.ISBN = "5786v45677v76487"; book.Comment = "fgkllrlljjklghhgfdhfhgfhgf"; book.Authors = "Villain"; root.Elements.Add(book); var paper = new NewspaperLibraryElement(); paper.Name = "TestPaper"; paper.PageCount = 25; paper.PublicationPlace = "Karaganda"; paper.PublisherName = "Namenaem"; paper.PublishYear = 2001; paper.ISSN = "456754547687"; paper.Comment = "fgkоднакоhgf"; paper.Date = DateTime.Now; paper.Number = 856; root.Elements.Add(paper); var patent = new PatentLibraryElement(); patent.Name = "TestPatent"; patent.PageCount = 125; patent.ApplicationDate = DateTime.Now.Date.AddDays(-2); patent.PublicationDate = DateTime.Now.Date.AddDays(-1); patent.Creator = "Леша изобрел что-то там"; patent.Country = "Гваделупа"; patent.Comment = "вот какая она"; patent.RegistrationNumber = 766456; root.Elements.Add(patent); var worker = new XMLWorker(); worker.WriteToXMLFile(root, @"D:\XMLFileWriteTest.xml"); Console.ReadKey(); }
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); }
/// <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()); } } } } }
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); }
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); }
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); }
static void Main(string[] args) { /*ArrayList secuence = FibonacciSecuence.CreateFibonacciSecuence(); * * Console.WriteLine("Enter size of secuence: "); * int secuencesize = ConsoleReader.ReadNumber(); * * for (int i = 1; i <= secuencesize; i++) * { * secuence.Add(FibonacciSecuence.mtx2x2.fibm(i)); * * } * * * FibonacciSecuence.mtx2x2.OutputSecuence(secuence); * Console.WriteLine("----------Secuence size: " + secuence.Count); * Console.WriteLine("----------Prime numbers: "); * SelectNumbers.SelectPrimeNumbers(secuence); * Console.WriteLine("----------Condition 2: "); * SelectNumbers.SelectNubersMultipleOfDigitsSum(secuence); * Console.WriteLine("----------Condition 3: "); * SelectNumbers.SelectNubersMultipleOf(5,secuence); * Console.WriteLine("----------Condition 4: "); * SelectNumbers.CountQuadraticRootsOfNumsWhichHaveDigitTwo(secuence); * Console.WriteLine("----------Condition 5: "); * SelectNumbers.SortBySecondDigit(secuence); * Console.WriteLine("----------Condition 7: "); * SelectNumbers.MaxSumOfDigitsPowerTwo(secuence); * Console.WriteLine("----------Condition 8: "); * SelectNumbers.AverageAmountOfZeros(secuence); * //Console.WriteLine("Condition 6: "); * //SelectNumbers.SelectAccordingToCondition6(secuence); */ Console.WriteLine("Enter the amount of money to compare: "); XMLWorker.ChooseCustomersWhoseTotalOrderSumIsBiggerThan(ConsoleReader.ReadNumber()); //Console.Clear(); Console.WriteLine("Enter the amount of money to compare: "); XMLWorker.ChooseCustomersWhoHadOrdersBiggerThan(ConsoleReader.ReadNumber()); XMLWorker.GroupByCountries(); XMLWorker.SinceWhenIsAClient(); // XMLWorker.GroupByCountries(); }
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); } }
public void ReadXMLFromFileWorksCorrectly() { var worker = new XMLWorker(); var root2 = new RootLibraryElement(); foreach (var el in worker.ReadXMLFromFile(@"C:\XMLFileWrite.xml")) { root2.Elements.Add(TryParse(el)); } Assert.IsTrue(root2.Elements.Count == 3); Assert.IsInstanceOfType(root2.Elements.First(), typeof(BookLibraryElement)); Assert.IsInstanceOfType(root2.Elements.Skip(1).First(), typeof(NewspaperLibraryElement)); Assert.IsInstanceOfType(root2.Elements.Skip(2).First(), typeof(PatentLibraryElement)); Assert.AreEqual("TestBook", (root2.Elements.First() as BookLibraryElement).Name); Assert.AreEqual("TestPaper", (root2.Elements.Skip(1).First() as NewspaperLibraryElement).Name); Assert.AreEqual("TestPatent", (root2.Elements.Skip(2).First() as PatentLibraryElement).Name); }
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(); }
/** * 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 in the reader * @throws IOException thrown when something went wrong with the IO */ public PdfTemplate ParseToTemplate(PdfContentByte cb, TextReader input) { CssFilesImpl cssFiles = new CssFilesImpl(); cssFiles.Add(GetDefaultCSS()); ICSSResolver cssResolver = new StyleAttrSvgCSSResolver(cssFiles); SvgPipelineContext hpc = new SvgPipelineContext(); hpc.SetTagFactory(GetDefaultTagProcessorFactory()); PdfTemplatePipeline templatePipeline = new PdfTemplatePipeline(cb); IPipeline pipeline = new CssResolverPipeline(cssResolver, new SvgPipeline(hpc, templatePipeline)); XMLWorker worker = new XMLWorker(pipeline, true); XMLParser p = new XMLParser(); p.AddListener(worker); p.Parse(input); return(templatePipeline.GetTemplate()); }
private byte[] RenderPages(string xhtml) { using (var output = new MemoryStream()) using (var htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xhtml))) using (var cssStream = new MemoryStream(Encoding.UTF8.GetBytes(css))) using (var doc = new Document(PageSize.A4, 10f, 10f, 10f + headerFooter.HeaderHeight, 10f + headerFooter.FooterHeight)) using (var writer = PdfWriter.GetInstance(doc, output)) { doc.Open(); XMLWorker worker = CreateXmlWorker(doc, writer); var p = new XMLParser(worker); p.Parse(new StringReader(xhtml)); doc.Close(); return(output.ToArray()); } }
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()); }
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"); }
/// <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 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 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 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)); }
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()); } }