Advertisement
andruhovski

Task985

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