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);
        }
Ejemplo n.º 2
0
        public void ChooseCustomersWhoseTotalOrderSumIsBiggerThanTest()
        {
            //arrange
            int expected = 38;

            //act
            int actual = XMLWorker.ChooseCustomersWhoseTotalOrderSumIsBiggerThan(10000);

            //assert
            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        /*--------------------------------------------------------
         * 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();
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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"));
        }
Ejemplo n.º 8
0
    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");
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 13
0
        /// <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());
                        }
                    }
                }
            }
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 17
0
        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();
        }
Ejemplo n.º 18
0
        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);
            }
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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();
        }
Ejemplo n.º 21
0
        /**
         * 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());
        }
Ejemplo n.º 22
0
        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());
        }
Ejemplo n.º 24
0
        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");
        }
Ejemplo n.º 25
0
        /// <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);
            }
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 27
0
        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;
            }
        }
Ejemplo n.º 28
0
        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));
        }
Ejemplo n.º 29
0
        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();
        }
Ejemplo n.º 30
0
        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());
                }
        }