Advertisement
andruhovski

How to convert HTML to PDF using Aspose.HTML for .NET

Nov 28th, 2017
456
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.05 KB | None | 0 0
  1. // See also: https://www.nuget.org/packages/Aspose.Html/
  2. using System;
  3. using Aspose.Html;
  4. using Aspose.Html.Drawing;
  5. using Aspose.Html.Rendering;
  6. using Aspose.Html.Rendering.Pdf;
  7.  
  8. namespace RenderSimplePdfDemo
  9. {
  10.     class Program
  11.     {
  12.         private static HTMLDocument _document;
  13.         private static void Main()
  14.         {
  15.            
  16.             _document = new HTMLDocument();
  17.             GenerateSampleHtml5Document();            
  18.             RenderSimplePdf();
  19.         }
  20.  
  21.         private static void RenderSimplePdf()
  22.         {
  23.             var width = Unit.FromMillimeters(210);
  24.             var height = Unit.FromMillimeters(297);
  25.             var pageSizeA4 = new Size(width, height);
  26.             var margins = new Margin(
  27.                 Unit.FromMillimeters(15), // left
  28.                 Unit.FromMillimeters(10), // top
  29.                 Unit.FromMillimeters(15), // right
  30.                 Unit.FromMillimeters(20));// bottom
  31.             var options = new PdfRenderingOptions { PageSetup = { AnyPage = new Page(pageSizeA4, margins) } };
  32.             const string outputfile = @"C:\aspose\pdf\simple-doc.pdf";
  33.             Console.WriteLine("Render PDF file started...");
  34.             var device = new PdfDevice(options, outputfile);
  35.             var renderer = new HtmlRenderer();
  36.             renderer.Render(device, _document);
  37.             Console.WriteLine("Render PDF file finished.");
  38.         }
  39.  
  40.         private static void GenerateSampleHtml5Document()
  41.         {
  42.             _document.InsertBefore(_document.CreateDocumentType("html", "", "", ""), _document.DocumentElement);
  43.             _document.DocumentElement.SetAttribute("lang", "en");
  44.             _document.Title = "Page for PDF rendering demo";
  45.  
  46.             var head = _document.GetElementsByTagName("head")[0];
  47.             var metaCharSet = (HTMLMetaElement)_document.CreateElement("meta");
  48.             metaCharSet.SetAttribute("charset", "UTF-8");
  49.  
  50.             var metaViewPort = (HTMLMetaElement)_document.CreateElement("meta");
  51.             metaViewPort.Name = "viewport";
  52.             metaViewPort.Content = "width=device-width, initial-scale=1";
  53.  
  54.             var linkElement1 = (HTMLLinkElement)_document.CreateElement("link");
  55.             linkElement1.Href = "http://cdn.myunv.com/css/uecore.css";
  56.             linkElement1.Rel = "stylesheet";
  57.  
  58.             var linkElement2 = (HTMLLinkElement)_document.CreateElement("link");
  59.             linkElement2.Href = "https://fonts.googleapis.com/css?family=Lato";
  60.             linkElement2.Rel = "stylesheet";
  61.  
  62.             var style = (HTMLStyleElement)_document.CreateElement("style");
  63.             //style.TextContent = "h1 {color: red;} h2 {color:green} table { border: 1px dashed black}" +
  64.             //    "h2 {page-break-after: always; } p {font-family: 'Germania One', cursive;}" + "@page { size: 7in 9.25in; margin: 27mm 16mm 27mm 16mm; }";
  65.             style.TextContent = "h1 {color: red;} " +
  66.                                 "h2 {color:green} " +
  67.                                 "table { border: 1px dashed black}" +
  68.                                 "p {font-family: 'Lato', sans-serif;}" +
  69.                                 "#coverPage {page-break-after: always; display: table}";
  70.  
  71.             head.AppendChild(metaCharSet);
  72.             head.AppendChild(metaViewPort);
  73.             head.AppendChild(linkElement1);
  74.             head.AppendChild(linkElement2);
  75.             head.AppendChild(style);
  76.  
  77.             const string coverPageHtmlContent = "<div id=\"coverPage\"style=\"height: 15cm; overflow: hidden;\">\r\n" +
  78.                                                 "<div style=\"display: table-cell; vertical-align: middle;\">\r\n" +
  79.                                                 "<div>\r\n" +
  80.                                                 "<h1>Cover Page<h1>\r\n" +
  81.                                                 "</div>\r\n" +
  82.                                                 "</div>\r\n" +
  83.                                                 "</div>";
  84.  
  85.             var coverPageElement = _document.CreateElement("div");
  86.             coverPageElement.InnerHTML = coverPageHtmlContent;
  87.  
  88.             var header1 = (HTMLHeadingElement)_document.CreateElement("h1");
  89.             header1.TextContent = "Heading 1";
  90.             var header2 = (HTMLHeadingElement)_document.CreateElement("h2");
  91.             header2.TextContent = "Heading 2";
  92.  
  93.             _document.DocumentElement.LastElementChild.AppendChild(coverPageElement);
  94.             _document.DocumentElement.LastElementChild.AppendChild(header1);
  95.             _document.DocumentElement.LastElementChild.AppendChild(header2);
  96.  
  97.             var colors = new[] { "red", "orange", "black", "green", "blue", "indigo", "violet" };
  98.             var alignment = new[] { "left", "right", "center" };
  99.             for (var i = 0; i < 10; i++)
  100.             {
  101.                 var paragraph = (HTMLParagraphElement)_document.CreateElement("p");
  102.                 paragraph.Id = $"par{i}";
  103.                 paragraph.Style.SetProperty("font-weight", i % 2 == 0 ? "700" : "400", "");
  104.                 paragraph.Style.SetProperty("color", colors[i % 7], "");
  105.                 paragraph.Style.SetProperty("text-align", alignment[i % 3], "");
  106.                 paragraph.TextContent = LoremNET.Lorem.Paragraph(3, 3);
  107.                 paragraph.SetAttribute("style",paragraph.Style.CSSText);
  108.                 _document.DocumentElement.LastElementChild.AppendChild(paragraph);
  109.             }
  110.  
  111.             var img = (HTMLImageElement)_document.CreateElement("img");
  112.             img.Src = "http://lorempixel.com/400/200/sports/1";
  113.             img.Alt = "Placeholder 400x200";
  114.             img.Title = "Placeholder image";
  115.             _document.DocumentElement.LastElementChild.AppendChild(img);
  116.             //Adding an ordered list
  117.             var orderedListElement = (HTMLOListElement)_document.CreateElement("ol");
  118.             for (var i = 0; i < 10; i++)
  119.             {
  120.                 HTMLLIElement listItem = (HTMLLIElement)_document.CreateElement("li");
  121.                 listItem.TextContent = $"Item {i + 1}";
  122.                 orderedListElement.AppendChild(listItem);
  123.             }
  124.             _document.DocumentElement.LastElementChild.AppendChild(orderedListElement);
  125.  
  126.             // Adding simple table 4x3
  127.             var table = (HTMLTableElement)_document.CreateElement("table");
  128.             var tBody = (HTMLTableSectionElement)_document.CreateElement("tbody");
  129.             for (var i = 0; i < 4; i++)
  130.             {
  131.                 var row = (HTMLTableRowElement)_document.CreateElement("tr");
  132.                 row.Id = "trow_" + i;
  133.                 for (var j = 0; j < 3; j++)
  134.                 {
  135.                     var cell = (HTMLTableCellElement)_document.CreateElement("td");
  136.                     cell.Id = $"cell{i}_{j}";
  137.                     cell.TextContent = "Cell " + j;
  138.                     row.AppendChild(cell);
  139.                 }
  140.                 tBody.AppendChild(row);
  141.             }
  142.             table.AppendChild(tBody);
  143.             _document.DocumentElement.LastElementChild.AppendChild(table);
  144.  
  145.         }
  146.     }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement