/// <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); } }
static void Main(string[] args) { Console.WriteLine("ВВедите url адрес"); string url = Console.ReadLine(); HtmlWorker download = new HtmlWorker(url); download.Dispose(); }
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); }
/// <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); }
// 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); }
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); }
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); }
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); }
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(); } }
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(); }
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()); } }
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); } }
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()); } }
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); }
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); } }
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); }
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[] { }); }
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(); }