Advertisement
andruhovski

Task #1062: Using custom fonts

Oct 15th, 2017
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.24 KB | None | 0 0
  1. using System;
  2. using Aspose.Html;
  3. using Aspose.Html.Drawing;
  4. using Aspose.Html.Rendering;
  5. using Aspose.Html.Rendering.Pdf;
  6. using Aspose.Html.Rendering.Xps;
  7.  
  8. namespace Task1062
  9. {
  10.     class Program
  11.     {
  12.         private static HTMLDocument _document;
  13.         private static readonly Length Height = Unit.FromMillimeters(297);
  14.         private static readonly Length Width = Unit.FromMillimeters(210);
  15.         private static readonly Size PageSizeA4 = new Size(Width, Height);
  16.         private static void Main()
  17.         {
  18.             _document = new HTMLDocument();
  19.             GenerateSampleHtml5Document();
  20.             RenderSimplePdf();
  21.  
  22.         }
  23.  
  24.         private static void RenderWithCoverPage()
  25.         {
  26.             Console.WriteLine(_document.DocumentElement.InnerHTML);
  27.  
  28.             var margin = new Margin(Unit.FromMillimeters(30)); //all margins are 30 mm
  29.  
  30.             var options = new XpsRenderingOptions();
  31.             options.PageSetup.FirstPage = new Page(PageSizeA4, margin);
  32.  
  33.             const string outputfile = @"C:\aspose\pdf\output06.pdf";
  34.             Console.WriteLine("Render PDF file started...");
  35.             var device = new XpsDevice(options, outputfile);
  36.             var renderer = new HtmlRenderer();
  37.             renderer.Render(device, _document);
  38.             Console.WriteLine("Render PDF file finished.");
  39.  
  40.         }
  41.  
  42.         private static void RenderMirrorPages()
  43.         {
  44.             var marginsLeft = new Margin(
  45.                 Unit.FromMillimeters(30), // left
  46.                 Unit.FromMillimeters(10), // top
  47.                 Unit.FromMillimeters(15), // right
  48.                 Unit.FromMillimeters(20));// bottom
  49.             var marginsRight = new Margin(
  50.                 Unit.FromMillimeters(15), // left
  51.                 Unit.FromMillimeters(10), // top
  52.                 Unit.FromMillimeters(30), // right
  53.                 Unit.FromMillimeters(20));// bottom
  54.  
  55.             var options = new PdfRenderingOptions();
  56.             options.PageSetup.SetLeftRightPage(
  57.                 new Page(PageSizeA4, marginsLeft),
  58.                 new Page(PageSizeA4, marginsRight));
  59.  
  60.             const string outputfile = @"C:\aspose\pdf\output03.pdf";
  61.             Console.WriteLine("Render PDF file started...");
  62.             var device = new PdfDevice(options, outputfile);
  63.             var renderer = new HtmlRenderer();
  64.             renderer.Render(device, _document);
  65.             Console.WriteLine("Render PDF file finished.");
  66.         }
  67.  
  68.         private static void RenderAdvancedPdf()
  69.         {
  70.             var width = Unit.FromMillimeters(210);
  71.             var height = Unit.FromMillimeters(297);
  72.             var pageSizeA4 = new Size(width, height);
  73.             var margins = new Margin(
  74.                 Unit.FromMillimeters(15), // left
  75.                 Unit.FromMillimeters(10), // top
  76.                 Unit.FromMillimeters(15), // right
  77.                 Unit.FromMillimeters(20));// bottom
  78.             var options = new PdfRenderingOptions { PageSetup = { AnyPage = new Page(pageSizeA4, margins) } };
  79.             const string outputfile = @"C:\aspose\pdf\output02.pdf";
  80.             Console.WriteLine("Render PDF file started...");
  81.             var device = new PdfDevice(options, outputfile);
  82.             var renderer = new HtmlRenderer();
  83.             renderer.Render(device, _document);
  84.             Console.WriteLine("Render PDF file finished.");
  85.         }
  86.  
  87.         private static void RenderSimplePdf()
  88.         {
  89.             var options = new PdfRenderingOptions();
  90.             Console.WriteLine(options.PageSetup.AnyPage.Margin.Top.IsAuto);
  91.             Console.WriteLine(options.PageSetup.AnyPage.Margin.Bottom.IsAuto);
  92.             Console.WriteLine(options.PageSetup.AnyPage.Margin.Left.IsAuto);
  93.             Console.WriteLine(options.PageSetup.AnyPage.Margin.Right.IsAuto);
  94.             Console.WriteLine(options.PageSetup.AnyPage.Size.Width);
  95.             Console.WriteLine(options.PageSetup.AnyPage.Size.Height);
  96.             const string outputfile = @"C:\aspose\pdf\output01.pdf";
  97.             Console.WriteLine("Render PDF file started...");
  98.             var device = new PdfDevice(options, outputfile);
  99.             var renderer = new HtmlRenderer();
  100.             renderer.Render(device, _document);
  101.             Console.WriteLine("Render PDF file finished.");
  102.         }
  103.  
  104.         private static void GenerateSampleHtml5Document()
  105.         {
  106.             _document.InsertBefore(_document.CreateDocumentType("html", "", "", ""), _document.DocumentElement);
  107.             _document.DocumentElement.SetAttribute("lang", "en");
  108.             _document.Title = "Page for PDF rendering demo";
  109.  
  110.             var head = _document.GetElementsByTagName("head")[0];
  111.             var metaCharSet = (HTMLMetaElement)_document.CreateElement("meta");
  112.             metaCharSet.SetAttribute("charset", "UTF-8");
  113.  
  114.             var metaViewPort = (HTMLMetaElement)_document.CreateElement("meta");
  115.             metaViewPort.Name = "viewport";
  116.             metaViewPort.Content = "width=device-width, initial-scale=1";
  117.  
  118.             var linkElement1 = (HTMLLinkElement)_document.CreateElement("link");
  119.             linkElement1.Href = "http://cdn.myunv.com/css/uecore.css";
  120.             linkElement1.Rel = "stylesheet";
  121.  
  122.             var linkElement2 = (HTMLLinkElement)_document.CreateElement("link");
  123.             //linkElement2.Href = "https://fonts.googleapis.com/css?family=Germania+One";
  124.             linkElement2.Href = "https://fonts.googleapis.com/css?family=Merriweather|Roboto+Slab";
  125.             linkElement2.Rel = "stylesheet";
  126.  
  127.             var style = (HTMLStyleElement)_document.CreateElement("style");
  128.             //style.TextContent = "h1 {color: red;} h2 {color:green} table { border: 1px dashed black}" +
  129.             //    "h2 {page-break-after: always; } p {font-family: 'Germania One', cursive;}" + "@page { size: 7in 9.25in; margin: 27mm 16mm 27mm 16mm; }";
  130.             style.TextContent = "h1 {color: red; font-family: 'Roboto Slab', serif;}" +
  131.                                 "h2 {color:green} " +
  132.                                 "table { border: 1px dashed black}" +
  133.                                 "p {font-family: 'Merriweather', serif;}";
  134.             //"p {font-family: 'Germania One', cursive;}";
  135.  
  136.             head.AppendChild(metaCharSet);
  137.             head.AppendChild(metaViewPort);
  138.             head.AppendChild(linkElement1);
  139.             head.AppendChild(linkElement2);
  140.             head.AppendChild(style);
  141.  
  142.             var header1 = (HTMLHeadingElement)_document.CreateElement("h1");
  143.             header1.TextContent = "Heading 1";
  144.             var header2 = (HTMLHeadingElement)_document.CreateElement("h2");
  145.             header2.TextContent = "Heading 2";
  146.  
  147.             _document.DocumentElement.LastElementChild.AppendChild(header1);
  148.             _document.DocumentElement.LastElementChild.AppendChild(header2);
  149.  
  150.             var colors = new[] { "red", "orange", "black", "green", "blue", "indigo", "violet" };
  151.             var alignment = new[] { "left", "right", "center" };
  152.             for (var i = 0; i < 2; i++)
  153.             {
  154.                 var paragraph = (HTMLParagraphElement)_document.CreateElement("p");
  155.                 paragraph.Id = $"par{i}";
  156.                 //paragraph.Style.SetProperty("font-weight", i % 2 == 0 ? "700" : "400", "");
  157.                 paragraph.Style.SetProperty("color", colors[i % 7], "");
  158.                 //paragraph.Style.SetProperty("text-align", alignment[i % 3], "");
  159.                 paragraph.TextContent = LoremNET.Lorem.Paragraph(50, 25);
  160.                 _document.DocumentElement.LastElementChild.AppendChild(paragraph);
  161.             }
  162.  
  163.             HTMLImageElement img = (HTMLImageElement)_document.CreateElement("img");
  164.             img.Src = "http://lorempixel.com/400/200/sports/1";
  165.             img.Alt = "Placeholder 400x200";
  166.             img.Title = "Placeholder image";
  167.             _document.DocumentElement.LastElementChild.AppendChild(img);
  168.             //Adding an ordered list
  169.             HTMLOListElement orderedListElement = (HTMLOListElement)_document.CreateElement("ol");
  170.             for (var i = 0; i < 10; i++)
  171.             {
  172.                 HTMLLIElement listItem = (HTMLLIElement)_document.CreateElement("li");
  173.                 listItem.TextContent = $"Item {i + 1}";
  174.                 orderedListElement.AppendChild(listItem);
  175.             }
  176.             _document.DocumentElement.LastElementChild.AppendChild(orderedListElement);
  177.  
  178.             // Adding simple table 4x3
  179.             var table = (HTMLTableElement)_document.CreateElement("table");
  180.             var tBody = (HTMLTableSectionElement)_document.CreateElement("tbody");
  181.             for (var i = 0; i < 4; i++)
  182.             {
  183.                 var row = (HTMLTableRowElement)_document.CreateElement("tr");
  184.                 row.Id = "trow_" + i;
  185.                 for (var j = 0; j < 3; j++)
  186.                 {
  187.                     var cell = (HTMLTableCellElement)_document.CreateElement("td");
  188.                     cell.Id = $"cell{i}_{j}";
  189.                     cell.TextContent = "Cell " + j;
  190.                     row.AppendChild(cell);
  191.                 }
  192.                 tBody.AppendChild(row);
  193.             }
  194.             table.AppendChild(tBody);
  195.             _document.DocumentElement.LastElementChild.AppendChild(table);
  196.  
  197.         }
  198.     }
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement