Пример #1
0
        /// <summary>
        /// Using iTextSharp's limited HTML to PDF capabilities.
        /// </summary>
        public PdfPCell RenderHtml()
        {
            if (PdfFont == null)
            {
                throw new NullReferenceException($"{nameof(PdfFont)} of the HTML section is null.");
            }

            var pdfCell = new PdfPCell
            {
                UseAscender       = true,
                UseDescender      = true,
                VerticalAlignment = Element.ALIGN_MIDDLE
            };

            applyStyleSheet();

            var props = new Hashtable
            {
                { "img_provider", new HtmlImageFactory(this.PdfElement) },
                { "font_factory", new UnicodeFontProvider(PdfFont.Fonts[0]) } // Always use Unicode fonts
            };

            using (var reader = new StringReader(Html))
            {
                var parsedHtmlElements = HtmlWorker.ParseToList(reader, StyleSheet, props);

                foreach (IElement htmlElement in parsedHtmlElements)
                {
                    applyRtlRunDirection(htmlElement);
                    pdfCell.AddElement(htmlElement);
                }

                return(pdfCell);
            }
        }
Пример #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("ВВедите url адрес");
            string     url      = Console.ReadLine();
            HtmlWorker download = new HtmlWorker(url);

            download.Dispose();
        }
Пример #3
0
        public void Verify_Html_To_Pdf_With_colspan_CanBeCreated()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            // create a StyleSheet
            var styles = new StyleSheet();

            // set the default font's properties
            styles.LoadTagStyle(HtmlTags.BODY, "encoding", "Identity-H");
            styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONT, "Tahoma");
            styles.LoadTagStyle(HtmlTags.BODY, "size", "16pt");

            FontFactory.Register(TestUtils.GetTahomaFontPath());

            var unicodeFontProvider = FontFactoryImp.Instance;

            unicodeFontProvider.DefaultEmbedding = BaseFont.EMBEDDED;
            unicodeFontProvider.DefaultEncoding  = BaseFont.IDENTITY_H;

            var props = new Hashtable
            {
                { "font_factory", unicodeFontProvider }
            };

            var document = new Document();

            PdfWriter.GetInstance(document, stream);
            document.AddAuthor(TestUtils.Author);
            document.Open();
            var objects = HtmlWorker.ParseToList(
                new StringReader(@"<table style='width: 100%;font-size:9pt;font-family:Tahoma;'>
 <tr>
    <td align='center' bgcolor='#00FF00' colspan='2'>Hello</td>
 </tr>
 <tr>
    <td align = 'right'> Month </td>
    <td align = 'right'> Savings </td>
 </tr>
 <tr>
   <td align = 'right'> January </td>
   <td align = 'right'>$100 </td>
 </tr>
</table>"),
                styles,
                props
                );

            foreach (IElement element in objects)
            {
                document.Add(element);
            }

            document.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
Пример #4
0
 /// <summary>
 /// Parse html to elements and adds elements to the Pdf
 /// </summary>
 /// <param name="html"><see cref="System.String"/>The HTML as string</param>
 public Pdf AddHtml(string html)
 {
     using (var reader = new StringReader(html))
     {
         var parsedHtmlElements = HtmlWorker.ParseToList(reader, new StyleSheet());
         foreach (IElement e in parsedHtmlElements)
         {
             this._elements.Add(new Builder <IElement>(e));
         }
     }
     return(this);
 }
        public void Verify_Unicode_Html_To_Pdf_CanBeCreated()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            // create a StyleSheet
            var styles = new StyleSheet();

            // set the default font's properties
            styles.LoadTagStyle(HtmlTags.BODY, "encoding", "Identity-H");
            styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONT, "Tahoma");
            styles.LoadTagStyle(HtmlTags.BODY, "size", "16pt");


            FontFactory.Register(TestUtils.GetTahomaFontPath());

            var unicodeFontProvider = FontFactoryImp.Instance;

            unicodeFontProvider.DefaultEmbedding = BaseFont.EMBEDDED;
            unicodeFontProvider.DefaultEncoding  = BaseFont.IDENTITY_H;

            var props = new Hashtable
            {
                { "img_provider", new MyImageFactory() },
                { "font_factory", unicodeFontProvider } // Always use Unicode fonts
            };

            // step 1
            var document = new Document();

            // step 2
            PdfWriter.GetInstance(document, stream);
            // step 3
            document.AddAuthor(TestUtils.Author);
            document.Open();
            // step 4
            var objects = HtmlWorker.ParseToList(
                new StringReader(createHtmlSnippet()),
                styles,
                props
                );

            foreach (IElement element in objects)
            {
                document.Add(element);
            }

            document.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
Пример #6
0
            // Renders the PDF to an array of bytes
            public async Task <MemoryStream> RenderPdf()
            {
                // Document is built-in class available in iTextSharp
                var stream   = new MemoryStream();
                var document = new Document(_size);
                var writer   = PdfWriter.GetInstance(document, stream);

                // Open document
                document.Open();

                // Render each page that has been added
                foreach (string page in Pages)
                {
                    document.NewPage();

                    // Generate this page of text
                    using (var ms = new MemoryStream()) {
                        using (var sw = new StreamWriter(ms, Encoding.UTF8)) {
                            await sw.WriteAsync(page);                             // Get the page output
                        }

                        // Read the created stream
                        using (MemoryStream generate = new MemoryStream(ms.ToArray())) {
                            using (StreamReader reader = new StreamReader(generate)) {
                                var providers = new Hashtable();
                                int i         = -1;
                                foreach (IElement el in HtmlWorker.ParseToList(reader, _styles, providers))
                                {
                                    if (el is iTextSharp.text.pdf.PdfPTable tbl)
                                    {
                                        i++;
                                        if (i < _colWidths.Count && _colWidths[i].Length == tbl.NumberOfColumns)
                                        {
                                            tbl.SetWidths(_colWidths[i]);
                                        }
                                    }
                                    document.Add(el);
                                }
                            }
                        }
                    }
                }

                // Close document
                document.Close();

                // Return the rendered PDF
                stream.Seek(0, SeekOrigin.Begin);
                return(stream);
            }
Пример #7
0
        public void Verify_Issue24_CanBe_Processed()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            // create a StyleSheet
            var styles = new StyleSheet();

            // set the default font's properties
            styles.LoadTagStyle(HtmlTags.BODY, "encoding", "Identity-H");
            styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONT, "Tahoma");
            styles.LoadTagStyle(HtmlTags.BODY, "size", "16pt");

            FontFactory.Register(TestUtils.GetTahomaFontPath());

            var unicodeFontProvider = FontFactoryImp.Instance;

            unicodeFontProvider.DefaultEmbedding = BaseFont.EMBEDDED;
            unicodeFontProvider.DefaultEncoding  = BaseFont.IDENTITY_H;

            var props = new Hashtable
            {
                { "font_factory", unicodeFontProvider }
            };

            var document = new Document();

            PdfWriter.GetInstance(document, stream);
            document.AddAuthor(TestUtils.Author);
            document.Open();
            var objects = HtmlWorker.ParseToList(
                new StringReader(@"<b>This is a test</b>
                     <br/>
                     <span style='color:blue;font-size:20pt;font-family:tahoma;font-style:italic;font-weight:bold'>
                        <b>Hi<b/>
                    </span>"),
                styles,
                props
                );

            foreach (IElement element in objects)
            {
                document.Add(element);
            }

            document.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
        public void Verify_Base64_Images_CanBe_Processed()
        {
            var pdfDoc = new Document(PageSize.A4);

            var pdfFilePath = TestUtils.GetOutputFileName();
            var fileStream  = new FileStream(pdfFilePath, FileMode.Create);

            PdfWriter.GetInstance(pdfDoc, fileStream);

            pdfDoc.AddAuthor(TestUtils.Author);
            pdfDoc.Open();

            FontFactory.Register(TestUtils.GetTahomaFontPath());


            var html = "<img alt='' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAodJREFUeNpsk0tME1EUhv87UwlCREhRFpi4cGMMRrTE4MaoxBhAsDyMssFHfCQu3BlXGuNKNy5NmqALoqEEMJWCgEUjYojllSpofIUNBNqmIKU6OnQennunUxvgJF86957z/+d27hkGigMlDJfOAmV7AcYsKGqIZljRSvhNE+CMTwEtXmBy2gQb7mCQJUBKkTIQYtfJYCNMAxO9hzq5CYmFiWFY6ISE9VFLRedc1SONeqwf+uJLuKreNPI9nltbLG0orhpqUCM90DRVoEbJ5MSLho1MMg1O0bHOuyoD9crCcxL+xa0HqwL+rEQHsb/CW89reO1aAyEuq+yp+zXvg66rgng8LrDXSmwYpUc8dZkmDsJNL+NCeVVXbWK+O32cpJ7E6OgkwuEwrl8phaHrVsfYD+x03XTPjN3nzZnD0HGxvPppTSLcLwo0I4lldRFK8jdCoZBlJquAbBnr0BD9GUTRvubahclW5qDukqkpIqlodGQ1At3UxZXaIUvauqsyjBV+jZJEJ3s83HO5j+UWI7E6C4mp2EQCTixyV2CvbbKzNmN2zNfHtbzPM3p4FOy/M5CXtwsOKZmmsOi2IHMvyyFhJhgY4BqutQ/aRRstocEngZzswnQnO+x1lqTjy8hIgNdyDc+x5nomxrKJhpcSp2lSrx48WlZhGArynG5hsLLoE7/jQ59f0aR7ZBkdbf7U6Ge+mKYaBvdx8wwZXjtWvfswfTrp3Over29J8NAXYO1t/v/7csZA5U5/Q35nH+aKt8OMR2POPSUFOyRmorvje3BiCt4b9zBANTmwGvP/aMoZRluJbURB8APmnPlQliNLzk8flxbeh9Du8eId5bYQ2SnxH36b/wQYABNFRsIaESsTAAAAAElFTkSuQmCC' />";

            var styles = new StyleSheet();

            PdfPCell pdfCell = new PdfPCell
            {
                Border       = 0,
                RunDirection = PdfWriter.RUN_DIRECTION_LTR
            };

            using (var reader = new StringReader(html))
            {
                var parsedHtmlElements = HtmlWorker.ParseToList(reader, styles);

                foreach (IElement htmlElement in parsedHtmlElements)
                {
                    pdfCell.AddElement(htmlElement);
                }
            }

            var table1 = new PdfPTable(1);

            table1.AddCell(pdfCell);
            pdfDoc.Add(table1);


            pdfDoc.Close();
            fileStream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
Пример #9
0
        public void Verify_Issue24_CanBe_Processed()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            // create a StyleSheet
            var styles = new StyleSheet();

            // set the default font's properties
            styles.LoadTagStyle(HtmlTags.BODY, "encoding", "Identity-H");
            styles.LoadTagStyle(HtmlTags.BODY, HtmlTags.FONT, "Tahoma");
            styles.LoadTagStyle(HtmlTags.BODY, "size", "16pt");

            FontFactory.Register(TestUtils.GetTahomaFontPath());

            var props = new Hashtable
            {
                { "font_factory", new UnicodeFontProvider() } // Always use Unicode fonts --> It's defined here: https://github.com/VahidN/iTextSharp.LGPLv2.Core/blob/master/src/iTextSharp.LGPLv2.Core.FunctionalTests/HtmlWorkerTests.cs#L117
            };

            var document = new Document();

            PdfWriter.GetInstance(document, stream);
            document.AddAuthor(TestUtils.Author);
            document.Open();
            var objects = HtmlWorker.ParseToList(
                new StringReader(@"<b>This is a test</b>
                     <br/>
                     <span style='color:blue;font-size:20pt;font-family:tahoma;font-style:italic;font-weight:bold'>
                        <b>Hi<b/>
                    </span>"),
                styles,
                props
                );

            foreach (IElement element in objects)
            {
                document.Add(element);
            }

            document.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
        public void Verify_Html_To_Pdf_CanBeCreated()
        {
            var pdfFilePath = TestUtils.GetOutputFileName();
            var stream      = new FileStream(pdfFilePath, FileMode.Create);

            // create a StyleSheet
            var styles = new StyleSheet();

            styles.LoadTagStyle("ul", "indent", "10");
            styles.LoadTagStyle("li", "leading", "14");
            styles.LoadStyle("country", "i", "");
            styles.LoadStyle("country", "color", "#008080");
            styles.LoadStyle("director", "b", "");
            styles.LoadStyle("director", "color", "midnightblue");

            var props = new Hashtable
            {
                { "img_provider", new MyImageFactory() }
            };

            // step 1
            var document = new Document();

            // step 2
            PdfWriter.GetInstance(document, stream);
            // step 3
            document.AddAuthor(TestUtils.Author);
            document.Open();
            // step 4
            var objects = HtmlWorker.ParseToList(
                new StringReader(createHtmlSnippet()),
                styles,
                props
                );

            foreach (IElement element in objects)
            {
                document.Add(element);
            }

            document.Close();
            stream.Dispose();

            TestUtils.VerifyPdfFileIsReadable(pdfFilePath);
        }
Пример #11
0
        protected FileDto CreatePdfPackage(string fileName, string htmlContent)
        {
            var file     = new FileDto(fileName, MimeTypeNames.ApplicationPdf);
            var filePath = Path.Combine(AppFolders.TempFileDownloadFolder, file.FileToken);

            if (!Directory.Exists(AppFolders.TempFileDownloadFolder))
            {
                Directory.CreateDirectory(AppFolders.TempFileDownloadFolder);
            }

            var pdfDoc     = new Document(PageSize.A4, 5f, 5f, 5f, 5f);
            var fileStream = new FileStream(filePath, FileMode.Create);

            PdfWriter.GetInstance(pdfDoc, fileStream);

            pdfDoc.Open();

            var      styles  = new StyleSheet();
            PdfPCell pdfCell = new PdfPCell
            {
                Border       = 0,
                RunDirection = PdfWriter.RUN_DIRECTION_LTR
            };

            using (var reader = new StringReader(htmlContent))
            {
                var parsedHtmlElements = HtmlWorker.ParseToList(reader, styles);

                foreach (IElement htmlElement in parsedHtmlElements)
                {
                    pdfCell.AddElement(htmlElement);
                }
            }

            var table1 = new PdfPTable(1);

            table1.AddCell(pdfCell);
            pdfDoc.Add(table1);
            pdfDoc.Close();

            fileStream.Dispose();

            return(file);
        }
Пример #12
0
        public byte[] GeneratePdfFromHtml(string html)
        {
            var pdfDoc     = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            var htmlparser = new HtmlWorker(pdfDoc);

            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
                pdfDoc.Open();

                StringReader sr = new StringReader(html);
                htmlparser.Parse(sr);
                pdfDoc.Close();

                return(memoryStream.ToArray());
                //byte[] bytes = memoryStream.ToArray();
                //memoryStream.Close();
            }
        }
Пример #13
0
        private void CreatePdfNormalText(string html, string path)
        {
            TextReader reader   = new StringReader(html);
            Document   document = new Document(PageSize.A4, 30, 30, 30, 30);
            PdfWriter  writer   = PdfWriter.GetInstance(document, new FileStream("my.pdf", FileMode.Create));

            /*
             * Sprawdzić jak z Downloadem dla roznych systemow np. dla telefonu
             */

            HtmlWorker worker = new HtmlWorker(document);

            document.Open();

            var bigFont = FontFactory.GetFont(BaseFont.TIMES_ROMAN, BaseFont.CP1257, 18, Font.BOLD);
            var para    = new Paragraph(html, bigFont);

            document.Add(para);
            document.Close();
        }
Пример #14
0
        public byte[] GeneratePdfGromHtml(string html)
        {
            var pdfDoc     = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            var htmlParser = new HtmlWorker(pdfDoc);

            using (var memoryStream = new MemoryStream())
            {
                var writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
                pdfDoc.Open();

                using (var stringReader = new StringReader(html))
                {
                    htmlParser.Parse(stringReader);
                }

                pdfDoc.Close();

                return(memoryStream.ToArray());
            }
        }
Пример #15
0
        public byte[] Generate(string htmlString)
        {
            Document pdfDoc     = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            var      htmlparser = new HtmlWorker(pdfDoc);

            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
                pdfDoc.Open();

                using (var sr = new StringReader(htmlString))
                {
                    htmlparser.Parse(sr);
                }

                pdfDoc.Close();

                byte[] bytes = memoryStream.ToArray();
                return(bytes);
            }
        }
Пример #16
0
        public byte[] CreateCertificateInPdf(string html)
        {
            Document pdfDocument = new Document(PageSize.A4);

            HtmlWorker worker = new HtmlWorker(pdfDocument);

            using (var mem = new MemoryStream())
            {
                PdfWriter writer = PdfWriter.GetInstance(pdfDocument, mem);

                pdfDocument.Open();

                using (var stringReader = new StringReader(html))
                {
                    worker.Parse(stringReader);
                }

                pdfDocument.Close();

                return(mem.ToArray());
            }
        }
Пример #17
0
        public byte[] CreatePdf(OrderViewModel order, List <CartProduct> cList, string email)
        {
            var html = BuildEmailContent(order, cList, email);

            byte[] bytes = null;

            StringReader sr = new StringReader(html.ToString());

            Document   pdfDoc     = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
            HtmlWorker htmlparser = new HtmlWorker(pdfDoc);

            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
                pdfDoc.Open();
                htmlparser.Parse(sr);
                pdfDoc.Close();

                bytes = memoryStream.ToArray();
                memoryStream.Close();
            }
            return(bytes);
        }
Пример #18
0
        public byte[] GeneratePdfFromHtl(string html)
        {
            Document pdf = new Document(PageSize.A4, 10f, 10f, 10f, 0f);

            HtmlWorker htmlParser = new HtmlWorker(pdf);

            using (MemoryStream memoryStream = new MemoryStream())
            {
                PdfWriter writer = PdfWriter.GetInstance(pdf, memoryStream);

                pdf.Open();

                using (StringReader streamReader = new StringReader(html))
                {
                    htmlParser.Parse(streamReader);
                }

                pdf.Close();

                byte[] bytes = memoryStream.ToArray();

                return(bytes);
            }
        }
Пример #19
0
        private byte[] GetPDF(string pHTML)
        {
            byte[]       bPDF       = null;
            MemoryStream ms         = new MemoryStream();
            TextReader   txtReader  = new StringReader(pHTML);
            Document     doc        = new Document(PageSize.Letter, 30, 30, 30, 30);
            PdfWriter    oPdfWriter = PdfWriter.GetInstance(doc, ms);

            doc.Open();
            var xmlWorker = HtmlWorker.ParseToList(txtReader, new StyleSheet());

            foreach (Paragraph item in xmlWorker)
            {
                if (item.Content.Contains("Semana:"))
                {
                    doc.NewPage();
                }
                doc.Add(item);
            }

            doc.Close();
            bPDF = ms.ToArray();
            return(bPDF);
        }
Пример #20
0
        public byte[] ExportPDF(string html)
        {
            StringReader stringReader = new StringReader(html);

            Document pdfDoc = new Document(PageSize.A4);

            HtmlWorker htmlparser = new HtmlWorker(pdfDoc);

            MemoryStream memoryStream = new MemoryStream();

            PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);

            pdfDoc.Open();

            htmlparser.Parse(stringReader);

            pdfDoc.Close();

            byte[] bytes = memoryStream.ToArray();

            memoryStream.Close();

            return(bytes != null ? bytes : new byte[] { });
        }
Пример #21
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Введите ссылку: ");
            var input = Console.ReadLine()?.Trim();

            var filesProvider = new FilesProvider();

            if (input != string.Empty)
            {
                var indexHandler = new IndexerHandler();
                var worker       = new HtmlWorker(input);

                await filesProvider.WriteAllData(worker.GetPages());

                indexHandler.IndexWords(worker.HtmlInfos);

                await filesProvider.WriteInvertedList(indexHandler.IndexedWords);

                var tfIdfInfo = indexHandler.IndexedWords
                                .Select(x => new { x.Key, Value = x.Value.Distinct() })
                                .Select(x =>
                                        new WordFrequencyInfo
                {
                    Word = x.Key,
                    IDF  = Math.Log10(worker.HtmlInfos.Count / (double)x.Value.Count()),
                    TF   = x.Value.ToDictionary(q => q, q =>
                    {
                        var docContentInfo = worker.HtmlInfos.FirstOrDefault(z => z.Level == q)?.Content;

                        var wordsCount =
                            (double)docContentInfo.WordsInfo.Count(z => z.LemmatizedWord == x.Key);

                        return(wordsCount / docContentInfo.WordsCount);
                    })
                });

                await filesProvider.WriteTfIdf(tfIdfInfo);
            }
            else
            {
                var indexedWords = await filesProvider.ReadInvertedList();

                Console.WriteLine("Введите запрос: ");
                var searchQuery = Console.ReadLine();

                //searchQuery = "Android OR fb OR Биробиджан";

                var query        = QueryWorker.ParseQuery(searchQuery);
                var searchResult = indexedWords.Where(query.Compile()).ToList();

                var words = searchQuery.Split(' ');

                var result = QueryWorker.GetDocNumbers(words, searchResult);

                Console.WriteLine("Результаты:");
                foreach (var item in result)
                {
                    Console.Write(item + " ");
                }
            }

            var sourceTfIdfList = await filesProvider.ReadTfIdfList();

            var searchQueryTfIdf = filesProvider.GetSearchQueryTfIdf(sourceTfIdfList, new[] { "ГАБДУЛИНА" }).ToList();

            filesProvider.GetRelevantDocs(await filesProvider.ReadTfIdfList(), searchQueryTfIdf);
            Console.WriteLine();
        }