<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.dynamicpdf.com/blog/</id>
    <title>DynamicPDF Blog</title>
    <updated>2023-06-14T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://www.dynamicpdf.com/blog/"/>
    <subtitle>DynamicPDF Blog</subtitle>
    <icon>https://www.dynamicpdf.com/blog/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Rasterizer for .NET V4.0 Released]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-rasterizer-for-net-v40-released</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-rasterizer-for-net-v40-released"/>
        <updated>2023-06-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DynamicPDF announces that DynamicPDF Rasterizer for .NET is updated to version 4.0 and is available for updating or installation. Easily update your project to the latest version using Visual Studio's NuGet package manager. This version fixes several bugs and improves Linux support by removing Rasterizer's dependence on Windows GDI+ on Windows systems. Changes include:]]></summary>
        <content type="html"><![CDATA[<p>DynamicPDF announces that DynamicPDF Rasterizer for .NET is updated to version 4.0 and is available for updating or installation. Easily update your project to the latest version using Visual Studio's NuGet package manager. This version fixes several bugs and improves Linux support by removing Rasterizer's dependence on Windows GDI+ on Windows systems. Changes include:</p>
<ul>
<li class="">DynamicPDF Rasterizer no longer uses Windows GDI+ on Windows systems,</li>
<li class="">image output is now consistent on Windows and Linux systems,</li>
<li class="">fixes the image type limitation and different assembly when installing Rasterizer on Linux,</li>
<li class="">fixes the "Parameter is not valid" error that sometimes occurred when converting a PDF into a bitmap image,</li>
<li class="">fixes an issue with error codes.</li>
</ul>
<p>DynamicPDF Rasterizer for .NET converts PDF documents into different image file formats. Most conversions require no more than two lines of code. Refer to the <a href="https://www.dynamicpdf.com/Rasterizer-PDF-.NET.aspx" target="_blank" rel="noopener noreferrer" class="">DynamicPDF Rasterizer for .NET</a> product page for more details.</p>
<p>For more information: <a href="http://www.dynamicpdf.com/" target="_blank" rel="noopener noreferrer" class="">www.dynamicpdf.com</a>, <a href="mailto:sales@dynamicpdf.com" target="_blank" rel="noopener noreferrer" class="">sales@dynamicpdf.com</a>, or 1-800-631-5006.</p>]]></content>
        <author>
            <name>James A. Brannan</name>
            <uri>https://github.com/jamesabrannan</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Core Suite for .NET V12.X Released]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-core-suite-for-net-v12x-released</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-core-suite-for-net-v12x-released"/>
        <updated>2023-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DynamicPDF Core Suite for .NET is updated to V12.x and is available for updating or installation. Update using Visual Studio's NuGet package manager to easily update your project to our latest version.]]></summary>
        <content type="html"><![CDATA[<p>DynamicPDF Core Suite for .NET is updated to V12.x and is available for updating or installation. Update using Visual Studio's NuGet package manager to easily update your project to our latest version.</p>
<p>DynamicPDF Core Suite for .NET now supports the following exciting new features. The Layout Engine (DLEX) now supports 1D and 2D barcodes, links, and dynamic images. We also offer new AutoLayout classes and better RTL support. DynamicPDF Core Suite also supports 3D image extraction and supports RichTextField form field extraction. And our documentation was overhauled to make it easier to find what you need to know when using our help documents.</p>
<p>New features in V12X:</p>
<ul>
<li class="">new AutoLayout classes,</li>
<li class="">Layout Engine (DLEX) now supports</li>
<li class="">Barcodes (1D and 2D)</li>
<li class="">Links</li>
<li class="">Dynamic Images</li>
<li class="">better RTL support,</li>
<li class="">3D image support and extraction, and</li>
<li class="">RichTextField form fields.</li>
</ul>
<p>Refer to our website for a complete list of DynamicPDF Core Suite's features at <a href="https://www.dynamicpdf.com/docs/dotnet/dynamic-pdf-core-suite-features" target="_blank" rel="noopener noreferrer" class="">https://www.dynamicpdf.com/docs/dotnet/dynamic-pdf-core-suite-features</a>.</p>
<p>DynamicPDF offers two Core Suite editions: DynamicPDF Core Suite Essential Edition and DynamicPDF Core Suite Full Edition. Our website's Licensing and Editions page (<a href="https://www.dynamicpdf.com/docs/dotnet/dynamic-pdf-core-suite-features%29" target="_blank" rel="noopener noreferrer" title="https://www.dynamicpdf.com/docs/dotnet/dynamic-pdf-core-suite-features)" class="">https://www.dynamicpdf.com/docs/dotnet/dynamic-pdf-core-suite-features)</a> contains more details.</p>
<p>For more information: <a href="https://www.dynamicpdf.com/" target="_blank" rel="noopener noreferrer" class="">https://www.dynamicpdf.com</a>, <a href="mailto:sales@dynamicpdf.com" target="_blank" rel="noopener noreferrer" class="">sales@dynamicpdf.com</a>, or 1-800-631-5006.</p>]]></content>
        <author>
            <name>James A. Brannan</name>
            <uri>https://github.com/jamesabrannan</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Converter v3 Released]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v3-released</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v3-released"/>
        <updated>2020-09-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DynamicPDF ConverterNow updated to v3, DynamicPDF Converter is available for download. This new release removes the Windows service that runs in the background and allows downloading DynamicPDF Converter directly from NuGet.]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="DynamicPDF Converter" src="https://www.dynamicpdf.com/blog/assets/images/Medium_converter-trimmed-a841a6734426caec8b3040c5c9b5068d.png" width="388" height="362" class="img_ev3q">Now updated to v3, DynamicPDF Converter is available for download. This new release removes the Windows service that runs in the background and allows downloading DynamicPDF Converter directly from NuGet.</p>
<p>DynamicPDF Converter supports the following features,</p>
<ul>
<li class="">converts most major file types to PDF (including Office and HTML),</li>
<li class="">supports multi-threading for faster conversion,</li>
<li class="">allows appending while converting a file to PDF,</li>
<li class="">has an intuitive and flexible object model,</li>
<li class="">and has transparent pricing.</li>
</ul>
<p>DynamicPDF Converter for .NET allows any .NET developer to convert over 50 document types to PDF dynamically, including</p>
<ul>
<li class="">MS Excel,</li>
<li class="">HTML,</li>
<li class="">MS Powerpoint,</li>
<li class="">TIFF,</li>
<li class="">MS Word,</li>
<li class="">and many more.</li>
</ul>
<p>DynamicPDF Converter is intuitive, efficient, and integrates seamlessly with DynamicPDF's other products. And plenty of <a href="https://www.dynamicpdf.com/docs/dotnet/converter-welcome" target="_blank" rel="noopener noreferrer" class="">documentation</a> and <a href="https://www.dynamicpdf.com/examples/dynamic-pdf-converter-.net" target="_blank" rel="noopener noreferrer" class="">examples</a> are provided, including the following examples.</p>
<ul>
<li class=""><a href="https://www.dynamicpdf.com/examples/excel-to-pdf-.net-core" target="_blank" rel="noopener noreferrer" class="">Excel to PDF</a></li>
<li class=""><a href="https://www.dynamicpdf.com/examples/html-to-pdf-.net-core#Converter" target="_blank" rel="noopener noreferrer" class="">HTML to PDF</a></li>
<li class=""><a href="https://www.dynamicpdf.com/examples/powerpoint-to-pdf-.net-core" target="_blank" rel="noopener noreferrer" class="">Powerpoint to PDF</a></li>
<li class=""><a href="https://www.dynamicpdf.com/examples/tiff-to-pdf-.net-core#Converter" target="_blank" rel="noopener noreferrer" class="">TIFF to PDF</a></li>
<li class=""><a href="https://www.dynamicpdf.com/examples/word-to-pdf-.net-core" target="_blank" rel="noopener noreferrer" class="">Word to PDF</a></li>
</ul>
<p>DynamicPDF Converter is available via our Pro, Pro Plus, or Ultimate subscription plans. For more information, refer to the <a href="https://www.dynamicpdf.com/PDF-Conversion-.NET.aspx" target="_blank" rel="noopener noreferrer" class="">DynamicPDF Converter</a> product page.</p>
<p>For more information: <a href="http://www.dynamicpdf.com/" target="_blank" rel="noopener noreferrer" class="">www.dynamicpdf.com</a>, <a href="mailto:sales@dynamicpdf.com" target="_blank" rel="noopener noreferrer" class="">sales@dynamicpdf.com</a>, or 1-800-631-5006.</p>]]></content>
        <author>
            <name>James A. Brannan</name>
            <uri>https://github.com/jamesabrannan</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label=".NET Core" term=".NET Core"/>
        <category label="Converter" term="Converter"/>
        <category label="PDF Converter" term="PDF Converter"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Convert HTML to PDF Using DynamicPDF HTML Converter]]></title>
        <id>https://www.dynamicpdf.com/blog/post/convert-html-to-pdf-using-dynamicpdf-html-converter</id>
        <link href="https://www.dynamicpdf.com/blog/post/convert-html-to-pdf-using-dynamicpdf-html-converter"/>
        <updated>2020-08-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The DynamicPDF HTML Converter product is available and included with any of our subscription plans (subscription pricing). You can also use DynamicPDF HTML Converter free if you accept a small footer stating "Created with the DynamicPDF Essentials Edition" and link to the DynamicPDF website from a public area of your website. DynamicPDF HTML Converter supports the following features,]]></summary>
        <content type="html"><![CDATA[<p>The DynamicPDF HTML Converter product is available and included with any of our subscription plans (<a href="https://www.dynamicpdf.com/store/purchaseall.aspx" target="_blank" rel="noopener noreferrer" class="">subscription pricing</a>). You can also use DynamicPDF HTML Converter free if you accept a small footer stating "Created with the DynamicPDF Essentials Edition" and link to the DynamicPDF website from a public area of your website. DynamicPDF HTML Converter supports the following features,</p>
<ul>
<li class="">quickly converts HTML to PDF,</li>
<li class="">supports the latest HTML, CSS, and JavaScript,</li>
<li class="">works with files, byte arrays, and URLs,</li>
<li class="">supports custom headers and footers,</li>
<li class="">supports .NET Framework and .NET Core (including Linux),</li>
<li class="">and supports a transparent pricing model.</li>
</ul>
<p>As this tutorial will demonstrate, DynamicPDF HTML Converter is an intuitive yet powerful library for converting HTML files, URLs, and webpages into PDF documents. A video tutorial is also included if you prefer watching the video rather than reading this tutorial. Or better yet, watch the video and work through the written tutorial. All source is available on Github, and the video is available here or on our YouTube channel.</p>
<h1>The Converter and ConversionOptions Classes</h1>
<p>The DynamicPDF HTML Converter namespace (<a href="https://www.dynamicpdf.com/docs/dotnet/cete.dynamicpdf.htmlconverter" target="_blank" rel="noopener noreferrer" class="">ceTe.DynamicPDF.HtmlConverter documentation</a>), consists of four classes,</p>
<ul>
<li class=""><a href="https://www.dynamicpdf.com/docs/dotnet/cete.dynamicpdf.htmlconverter.conversionoptions" target="_blank" rel="noopener noreferrer" class="">ConversionOptions</a>,</li>
<li class=""><a href="https://www.dynamicpdf.com/docs/dotnet/cete.dynamicpdf.htmlconverter.converter" target="_blank" rel="noopener noreferrer" class="">Converter</a>,</li>
<li class=""><a href="https://www.dynamicpdf.com/docs/dotnet/cete.dynamicpdf.htmlconverter.licensingexception" target="_blank" rel="noopener noreferrer" class="">LicensingException</a>,</li>
<li class=""><a href="https://www.dynamicpdf.com/docs/dotnet/cete.dynamicpdf.htmlconverter.unitconverter" target="_blank" rel="noopener noreferrer" class="">UnitConverter</a>,</li>
</ul>
<p>and two enumerations,</p>
<ul>
<li class=""><a href="https://www.dynamicpdf.com/docs/dotnet/cete.dynamicpdf.htmlconverter.pageorientation" target="_blank" rel="noopener noreferrer" class="">PageOrientation</a>,</li>
<li class="">and <a href="https://www.dynamicpdf.com/docs/dotnet/cete.dynamicpdf.htmlconverter.pagesize" target="_blank" rel="noopener noreferrer" class="">PageSize</a>.</li>
</ul>
<p>Of these, the two classes most important for understanding this tutorial are the Converter and ConversionOptions classes.  The Converter class is how we convert the document from HTML to PDF using the static Convert or AsyncConvert methods. Both methods are overloaded to support different ways of processing HTML conversion. Although these two methods are all that is required, if you wish to perform any formatting of a PDF document, then you must use the ConversionOptions class to format that PDF. The ConversionOptions class supports specifying a PDF document's metadata, such as author, subject, and name. It also supports formating a PDF document by specifying page size, page orientation, headers, footers, and margins.</p>
<p>Now that we discussed the Converter and ConversionOptions classes let's explore using these classes to convert and format HTML to PDF.</p>
<h1>Creating the Project</h1>
<p>Start by creating or downloading the project. You can choose to follow the instructions here or download the project from GitHub (link).</p>
<ul>
<li class="">Create a new Visual Studio Console App (.NET Core) named ConsoleAppHtmlToPdf.</li>
<li class="">Add DynamicPDF HTML Converter NuGet package to the project (<a href="https://www.nuget.org/packages/ceTe.DynamicPDF.HtmlConverter.NET" target="_blank" rel="noopener noreferrer" class="">NuGet Package ID<!-- -->:ceTe<!-- -->.DynamicPDF.HtmlConverter.NET</a>).</li>
<li class="">The code should appear as follows.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">using System</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">using System</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">IO</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">using System</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Threading</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">using System</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Threading</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Tasks</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">using ceTe</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">DynamicPDF</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">HtmlConverter</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">namespace ConsoleAppHtmlToPdf</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> class Program</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">WriteLine</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Hello World!"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<h1>Convert Dynamically Generate PDF</h1>
<p>After creating the project, in this first example, we dynamically generate a PDF using an HTML table generated by sample form data.</p>
<ul>
<li class="">Create a new method named ConvertDynamicHtmlToPdf and add a multidimensional array as a string parameter.</li>
<li class="">Create sample data to load and display as an HTML table.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">,</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> companyData </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Grey Fox Brewing"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Mark Smith"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Canada"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Deutsche Ingolstadt"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Elias Schneider"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Germany"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Centro comercial Moctezuma"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Alejandra Silva"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Columbia"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"West Indies Trading Company"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Helen Moore"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"UK"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Bharat of India"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Aarnav Chanda"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"India"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Magazzini Alimentari Riuniti"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Giovanni Esposito"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Italy"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Joyas de Cristal"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Helena Garcia"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Spain"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Telemar Brasil"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Elias Martinez"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Brazil"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"Joe's Pizzaria"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"Joe Bowman"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token string" style="color:#e3116c">"United States"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>The data consists of an array containing each entry which consists of the company name, contact name, and the country the company is located.</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ConvertDynamicHtmlToPdf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">,</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> data</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string head </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;html&gt;&lt;head&gt;&lt;style&gt;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"table {font-family:arial, sans-serif;border-collapse:collapse;width:100%;}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"td,th {border:1px solid #dddddd;text-align:left;padding:8px;}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"tr:nth-child(even){background-color:#dddddd;}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;/style&gt;&lt;/head&gt;&lt;body&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string title </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;h2&gt;Company Contacts Listing&lt;/h2&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string rowHeader </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;tr&gt;&lt;th&gt;Company&lt;/th&gt;&lt;th&gt;Contact&lt;/th&gt;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;th&gt;Country&lt;/th&gt;&lt;/tr&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> tableTag </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;table&gt;"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;/table&gt;"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string close </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;/body&gt;&lt;/html&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> StringBuilder output </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">StringBuilder</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">head</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">title</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">tableTag</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rowHeader</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">int</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token function" style="color:#d73a49">foreach</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">string rec in companyData</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token operator" style="color:#393A34">++</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"&lt;tr&gt;"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"&lt;td&gt;"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">rec</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"&lt;/td&gt;"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i </span><span class="token operator" style="color:#393A34">%</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"&lt;/tr&gt;"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">tableTag</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">close</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">ToString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"example5.pdf"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>After creating our newly created method, add it to the project's Main method.</p>
<ul>
<li class="">Modify Main to call the newly created method.</li>
<li class="">Run the program and review the created PDF document.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token function" style="color:#d73a49">ConvertSaveToFileNoInputHtml</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><img decoding="async" loading="lazy" src="https://www.dynamicpdf.com/images/blog/2020-08/example-four.png" alt="Example illustrating HTML with base tag." class="img_ev3q"></p>
<p>As this first example illustrated, creating a PDF document from dynamically generated HTML data is straightforward and only required a document path as a URL and the PDF output.</p>
<h1>Convert HTML to PDF Using URI</h1>
<p>As the previous example illustrated, generating PDF from HTML is easy when using DynamicPDF HTML Converter. Now let's convert a PDF using a URI to an HTML document, only this time we use a large HTML document combined with ConversionOptions to format the PDF and then save it to a local file.</p>
<ul>
<li class="">Create a new static method named ConvertSaveToFileNoInputHtml.</li>
<li class="">Add the URL to the Project Guttenberg's "A Tale of Two Cities."</li>
<li class="">Create a ConversionOptions instance and add the margins, author, creator, title, subject, and the header and footer to the ConversionOptions properties.</li>
<li class="">Call the Converter.Convert method, passing the URL document to convert, the output path for the PDF document, and the conversion options.</li>
<li class="">The code for the ConvertUriToPdf method should appear as follows.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ConvertUriToPdf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// method signature: public static void Convert(Uri uri, string outputPath, </span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// ConversionOptions conversionOptions = null);</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string outputDocumentPath </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./tale-two-cities--document.pdf"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string taleOfTwoCities </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://www.gutenberg.org/files/98/98-h/98-h.htm"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Uri resolvePath </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">Uri</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">taleOfTwoCities</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">double</span><span class="token plain"> leftRightMarginsPts </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">36</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">double</span><span class="token plain"> topBottomMarginsPts </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">144</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> ConversionOptions conversionOptions </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">ConversionOptions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">PageSize</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Letter</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> PageOrientation</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Portrait</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> leftRightMarginsPts</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> topBottomMarginsPts</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Author </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Charles Dickens"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Creator </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"James B"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Title </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"A Tale of Two Cities"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Subject </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Guttenberg press version of Charles Dickens\'s"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">" A Tale of Two Cities."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Header </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;div style = 'text-align:center;width:100%"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token string" style="color:#e3116c">";font-size:15em;'&gt;A Tale of Two Cities&lt;/div&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Footer </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;div style = 'text-align:right; display:inline-block;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token string" style="color:#e3116c">"font-size:6em;'&gt;Page "</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">" of &lt;/div&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">resolvePath</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> outputDocumentPath</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p><img decoding="async" loading="lazy" src="https://www.dynamicpdf.com/images/blog/2020-08/example-one.png" alt="Example illustraing HTML to PDF conversion." class="img_ev3q"></p>
<p>As this second example illustrated, the conversion from HTML to PDF in this example was also straightforward. The ConversionOptions class, although optional, provides powerful options to format a PDF.  For example, in the code above, we created a header from CSS that wrote the title at the top of each page. We also created a footer from CSS that wrote the path and page number at the bottom of each page.</p>
<h1>Convert with Base Path and URI</h1>
<p>The Convert method consists of an overloaded method that takes an input HTML string, a URL, and an optional ConversionOptions parameter. The following is the method's signature.</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">public </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">string inputHtml</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> string outputPath</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> Uri basePath </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> ConversionOptions conversionOptions </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> null</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>The inputHtml is the string content containing HTML, while the basePath is the URL to the document's root path. This overloaded Convert method is how we can process an HTML document using a baseTag. Refer to <a href="https://www.w3schools.com/tags/tag_base.asp" target="_blank" rel="noopener noreferrer" class="">HTML baseTag</a> on W3Schools for more details on HTML base paths.</p>
<ul>
<li class="">Create a static method named ConvertSaveToFileInputHtml.</li>
<li class="">Add an array with two relative paths.</li>
<li class="">Create a string containing links to the relative paths in the array.</li>
<li class="">Create a new URI containing the path listed below to Wikimedia Commons.</li>
<li class="">Call the Convert method, passing the input HTML, the output path, and the URI.</li>
<li class="">Create a new ConversionOptions instance and set the page size, page orientation, and the left/right and bottom/top margins.</li>
<li class="">Reduce the zoom to 25% by setting the Zoom property in ConversionOptions.</li>
<li class="">Add the ConvertSaveToFileInputHtml method call to the Main method.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ConvertSaveToFileInputHtml</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// method signature: public static void Convert(string inputHtml, string outputPath,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Uri basePath = null, ConversionOptions conversionOptions = null);</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> filePaths </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./e/ea/Doel_-_Water_pump_1.jpg"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./3/3a/The_Soviet_Union_1939_CPA_690_stamp_%28Plane%29_cancelled.jpg"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string tempHtml </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;html&gt;&lt;body&gt;&lt;img src=\""</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> filePaths</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\"&gt;"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;img src=\""</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> filePaths</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\"&gt;"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;/body&gt;&lt;/html&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Uri resolvePath </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">Uri</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://upload.wikimedia.org/wikipedia/commons/"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">tempHtml</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"example1.pdf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> resolvePath</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> ConversionOptions conversionOptions </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">ConversionOptions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">PageSize</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Tabloid</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> PageOrientation</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Landscape</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Zoom </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.25F</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">tempHtml</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"secondTry.pdf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> resolvePath</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">conversionOptions</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<ul>
<li class="">Run the program and review the PDF output.</li>
</ul>
<p><img decoding="async" loading="lazy" src="https://www.dynamicpdf.com/images/blog/2020-08/example-two.png" alt="Example illustrating HTML with base tag." class="img_ev3q"></p>
<p>In this example, we created a PDF document by combining an HTML string with its base path URI (<a href="https://upload.wikimedia.org/wikipedia/commons/" target="_blank" rel="noopener noreferrer" class="">https://upload.wikimedia.org/wikipedia/commons/</a>). The complete HTML resolved as follows.</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">html</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">body</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">img src</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">"https</span><span class="token operator" style="color:#393A34">:</span><span class="token comment" style="color:#999988;font-style:italic">//upload.wikimedia.org/wikipedia/commons/./e/ea/Doel_-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">_Water_pump_1</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">jpg"</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">img src</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">"https</span><span class="token operator" style="color:#393A34">:</span><span class="token comment" style="color:#999988;font-style:italic">//upload.wikimedia.org/wikipedia/commons/./3/3a/The_Soviet_Union_1939_</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPA_690_stamp_</span><span class="token operator" style="color:#393A34">%</span><span class="token number" style="color:#36acaa">28</span><span class="token plain">Plane</span><span class="token operator" style="color:#393A34">%</span><span class="token number" style="color:#36acaa">29</span><span class="token plain">_cancelled</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">jpg"</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">body</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">html</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<p>We then added document formatting, followed by calling the  Convert method to write the PDF document. Note that the conversion options included formatting the output page as tabloid, the orientation as landscape, and the margins as 1 for the left/right and top/bottom margins.</p>
<h1>Convert with CSS and JavaScript</h1>
<p>Now let's create the method ConvertHtmlWithCssJavaScriptToPdf to illustrate converting embedded CSS and embedded JavaScript.</p>
<ul>
<li class="">Add the samplePageWithCss and samplePageWithJavaScript variables to the Program class.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> string samplePageWithCss </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head &gt;&lt;style&gt;"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"body {background-color: lightblue;}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"h1 {color: white; text-align: center;} p "</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{font-family: verdana;font - size: 20px;}&lt;/style&gt;"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;/head&gt;&lt;body&gt;&lt;h1&gt;My First CSS Example&lt;/h1&gt;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;p&gt;This is a paragraph.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> string samplePageWithJavaScript </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;body&gt;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;h2&gt;My First Web Page&lt;/h2&gt;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;p&gt;My First Paragraph.&lt;/p&gt;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;script&gt;document.getElementById(\"demo\")"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">".innerHTML = 5 + 6;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<ul>
<li class="">Create a new method named ConvertHtmlWithCssJavaScriptPdf.</li>
<li class="">Convert the embedded CSS and embedded JavaScript to PDFs.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ConvertHtmlWithCssJavaScriptPdf</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// method signature: public static void Convert(string inputHtml, string outputPath, </span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// Uri basePath = null, ConversionOptions conversionOptions = null);</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">samplePageWithCss</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"cssExample.pdf"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">samplePageWithJavaScript</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"jscriptExample.pdf"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>After running the method, both PDF documents output formatted CSS and JavaScript. As the two examples illustrate, DynamicPDF HTML Converter seamlessly supports CSS and JavaScript embedded in HTML documents.</p>
<p><img decoding="async" loading="lazy" src="https://www.dynamicpdf.com/images/blog/2020-08/example-three.png" alt="Example illustrating converting embedded CSS and JavaScript into a PDF." class="img_ev3q"></p>
<h1>Convert to Byte Array</h1>
<p>You can also convert a PDF to a byte array rather than saving it to a file. In this example, we convert an HTML document into a byte array.</p>
<ul>
<li class="">Create a new static method named ConvertWriteToByteArrayNoInputHtml.</li>
<li class="">Create a new ConversionOptions instance and pass the PageSize.Tabloid, PageOrientation.Landscape, and the left/right margin and top/bottom margins as 28 points.</li>
<li class="">Create a new URI object instance and pass the CNN URL to the constructor.</li>
<li class="">Call the Convert method, passing the URI and ConversionOptions as parameters and return a byte array as the result.</li>
<li class="">Save the byte array to a file.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ConvertWriteToByteArrayNoInputHtml</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// public static byte[] Convert(Uri uri, ConversionOptions conversionOptions = null);</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> ConversionOptions conversionOptions </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">ConversionOptions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">PageSize</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Tabloid</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> PageOrientation</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Landscape</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">28</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">28</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Uri document </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">Uri</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"https://cnn.com"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> byte</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> output </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">conversionOptions</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> File</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">WriteAllBytes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"./cnn-printiout.pdf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>This simple example illustrated converting an HTML document to a PDF as a byte array. For simplicity, we saved the byte array to a file to demonstrate that the PDF was printed and formatted correctly.</p>
<h1>Convert to Byte Array Asynchronous</h1>
<p>For the final example, we convert an HTML document to a byte array asynchronously. If you ran the application in the first example, where it converted A Tale of Two Cities from HTML to PDF, then you probably noticed it took several seconds for the conversion to complete, as the document consists of 330 pages. When processing large documents, it makes sense to convert the document asynchronously so it processes without blocking the main thread. In this example, we convert HTML to PDF asynchronously.</p>
<ul>
<li class="">Create a new static method named ConvertAsyncReturnByteArray that specifies async and returns a Task.</li>
<li class="">Create strings that specify the output document's path and the input document's path.</li>
<li class="">Create a URI from the input document's path.</li>
<li class="">Create a ConversionOptions instance, passing the page size as letter, the page orientation as portrait, and the margins as 28 points.</li>
<li class="">Add a title and footer to the ConversionOptions instance.</li>
<li class="">Call the ConvertAsync method and pass the input URI document and the ConversionOptions to the method as parameters. Return the output as a byte array.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> async Task </span><span class="token function" style="color:#d73a49">ConvertAsyncReturnByteArray</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// public static Task&lt;byte[]&gt; ConvertAsync(Uri uri, ConversionOptions</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token comment" style="color:#999988;font-style:italic">// conversionOptions = null);</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string outputDocumentPath </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./gibbons-document.pdf"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string gibbons </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://www.gutenberg.org/files/731/731-h/731-h.htm"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> Uri resolvePath </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">Uri</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">gibbons</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">double</span><span class="token plain"> leftRightMarginsPts </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">28</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">double</span><span class="token plain"> topBottomMarginsPts </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">28</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> ConversionOptions conversionOptions </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">ConversionOptions</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">PageSize</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Letter</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> PageOrientation</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Portrait</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> leftRightMarginsPts</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> topBottomMarginsPts</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Title </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"HISTORY OF THE DECLINE AND FALL OF THE ROMAN"</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">" EMPIRE"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Footer </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"&lt;div style = 'text-align:right; display:inline-block;font-size:6em;'&gt;"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Page of &lt;/div&gt;"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> byte</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> vals </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> await Converter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">ConvertAsync</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">resolvePath</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> conversionOptions</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> File</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">WriteAllBytes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">outputDocumentPath</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> vals</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<ul>
<li class="">Modify the Main method to call the ConvertAsyncReturnByteArray method as an asynchronous task.</li>
</ul>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Main</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">string</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> var task </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">ConvertAsyncReturnByteArray</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">int</span><span class="token plain"> i </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">while</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">task</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">IsCompleted </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> false</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> Console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"\r"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> i</span><span class="token operator" style="color:#393A34">++</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> task</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Wait</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>When we execute the program, it takes several seconds to build the PDF document. However, as the simple code in Main illustrates, it does not block the thread while making the PDF.</p>
<h1>GitHub Project</h1>
<p>The GitHub project is available here at DynamicPDF/blog-convert-html-to-pdf (<a href="https://github.com/DynamicPDF/blog-convert-html-to-pdf.git" target="_blank" rel="noopener noreferrer" class="">project file</a>).</p>
<h1>Summary</h1>
<p>In this tutorial, we explored using DynamicPDF HTML Converter. DynamicPDF HTML Converter supports synchronous and asynchronous document conversion. It also supports HTML strings with Base URLs, embedded CSS, and embedded JavaScript. And, as the examples illustrated, DynamicPDF HTML Converter supports formatting PDF with many formatting options. As the examples shown, creating a PDF from HTML is straightforward. Get started using Dynamic HTML Converter today by using the free version or by purchasing a subscription today.</p>]]></content>
        <author>
            <name>James A. Brannan</name>
            <uri>https://github.com/jamesabrannan</uri>
        </author>
        <category label="DynamicPDF HTML Converter" term="DynamicPDF HTML Converter"/>
        <category label="PDF" term="PDF"/>
        <category label=".NET" term=".NET"/>
        <category label="C#" term="C#"/>
        <category label="Visual Studio" term="Visual Studio"/>
        <category label="Programming" term="Programming"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF HTML Converter Release]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-html-converter-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-html-converter-release"/>
        <updated>2020-07-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Our new HTML Converter product is now available and is included with any of our subscription plans. It is also available for FREE if you are OK with a small message at the bottom of your PDFs and linkback to our site from a public area of your website. Checkout these great features:]]></summary>
        <content type="html"><![CDATA[<p>Our new HTML Converter product is now available and is included with any of our subscription plans. It is also available for FREE if you are OK with a small message at the bottom of your PDFs and linkback to our site from a public area of your website. Checkout these great features:</p>
<ul>
<li class="">Quick HTML to PDF Conversion</li>
<li class="">Supports the latest HTML, CSS and JavaScript</li>
<li class="">Work with files, byte arrays or URLs</li>
<li class="">Custom headers and footers</li>
<li class="">Supports .NET Framework and .NET Core (including Linux)</li>
<li class="">Transparent pricing</li>
</ul>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label="HTML to PDF" term="HTML to PDF"/>
        <category label="PDF Converter" term="PDF Converter"/>
        <category label="Release" term="Release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Subscriptions are Available]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-subscriptions-are-available</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-subscriptions-are-available"/>
        <updated>2020-07-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Subscriptions for our great products are now available. Subscriptions make it easy for you to stay current on the latest features, bug fixes and security patches. They also offer royalty free distribution and work well in cloud environments. Four subscription levels are available:]]></summary>
        <content type="html"><![CDATA[<p>Subscriptions for our great products are now available. Subscriptions make it easy for you to stay current on the latest features, bug fixes and security patches. They also offer royalty free distribution and work well in cloud environments. Four subscription levels are available:</p>
<ul>
<li class=""><strong><a href="https://www.dynamicpdf.com/essentials-subscription" target="_blank" rel="noopener noreferrer" class="">Essentials Subscription</a></strong>: Includes HTML to PDF conversion and basic PDF merging.</li>
<li class=""><strong><a href="https://www.dynamicpdf.com/professional-subscription" target="_blank" rel="noopener noreferrer" class="">Professional Subscription</a></strong>: Includes Essentials plus one of our great products.</li>
<li class=""><strong><a href="https://www.dynamicpdf.com/professional-plus-subscription" target="_blank" rel="noopener noreferrer" class="">Professional Plus Subscription</a></strong>: Includes Essentials plus two of our great products.</li>
<li class=""><strong><a href="https://www.dynamicpdf.com/ultimate-subscription" target="_blank" rel="noopener noreferrer" class="">Ultimate Subscription</a></strong>: Includes all of our great products.</li>
</ul>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label="PDF Library" term="PDF Library"/>
        <category label="Release" term="Release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Creating PDF Reports with Database Data (SQL)]]></title>
        <id>https://www.dynamicpdf.com/blog/post/creating-pdf-reports-with-database-data-sql</id>
        <link href="https://www.dynamicpdf.com/blog/post/creating-pdf-reports-with-database-data-sql"/>
        <updated>2019-07-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DynamicPDF ReportWriter make’s it easy to create reports based on your business objects, but sometimes it may be preferred to access data directly from a database using an SQL query or stored procedure. This can easily be done by utilizing one of these report data classes:]]></summary>
        <content type="html"><![CDATA[<p><a href="https://www.dynamicpdf.com/Reports-PDF-.NET.aspx" target="_blank" rel="noopener noreferrer" title="Create PDF" class="">DynamicPDF ReportWriter</a> make’s it easy to create reports based on your business objects, but sometimes it may be preferred to access data directly from a database using an SQL query or stored procedure. This can easily be done by utilizing one of these report data classes:</p>
<ul>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_05/DynamicPDF~ceTe.DynamicPDF.LayoutEngine.Data.DataReaderReportData.html" target="_blank" rel="noopener noreferrer" class="">DataReaderReportData</a></li>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_05/DynamicPDF~ceTe.DynamicPDF.LayoutEngine.Data.DataTableReportData.html" target="_blank" rel="noopener noreferrer" class="">DataTableReportData</a></li>
</ul>
<p>Let’s take a look at the steps involved with doing this. First, attach an event to the DocumentLayout’s ReportDataRequired event. This event will be called anytime a report or sub report requires data.</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Create the document's layout from a DLEX template</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DocumentLayout documentLayout </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">DocumentLayout</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">Util</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">GetResourcePath</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"SimpleReport.dlex"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Attach to the ReportDataRequired event</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">documentLayout</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ReportDataRequired </span><span class="token operator" style="color:#393A34">+=</span><span class="token plain"> DocumentLayout_ReportDataRequired</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>Now in that event, first check the elementId of the report or sub report that is requesting the data. This is necessary in case there are multiple reports or sub reports in your document layout. Next, create a DataReader or DataTable and use it to create a DataReaderReportData or DataTableReportData class. Then set the event’s RepartData event argument to it.</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">private </span><span class="token keyword" style="color:#00009f">static</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">DocumentLayout_ReportDataRequired</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">object sender</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> ReportDataRequiredEventArgs args</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ElementId </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ProductsReport"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> string sqlString </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"SELECT ProductName, QuantityPerUnit, UnitPrice "</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token string" style="color:#e3116c">"FROM Products "</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> SqlConnection connection </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">SqlConnection</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">connectionString</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> SqlCommand command </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">SqlCommand</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">sqlString</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> connection</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> connection</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> SqlDataReader reader </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> command</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">ExecuteReader</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> args</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ReportData </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">DataReaderReportData</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">connection</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> reader</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>Lastly, layout your DocuementLayout to a Document and output the PDF.</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Specify the data</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NameValueLayoutData layoutData </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">NameValueLayoutData</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">layoutData</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Add</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"ReportCreatedFor"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Alex Smith"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">// Layout the document and save the PDF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Document document </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> documentLayout</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Layout</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">layoutData</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Draw</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">outputFilePath</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="wrap-up">Wrap Up<a href="https://www.dynamicpdf.com/blog/post/creating-pdf-reports-with-database-data-sql#wrap-up" class="hash-link" aria-label="Direct link to Wrap Up" title="Direct link to Wrap Up" translate="no">​</a></h5>
<p>A C# Visual Studio project demonstrating this is available on GitHub:</p>
<p><a href="https://github.com/DynamicPDF/dotnet-pdf-report-from-database" target="_blank" rel="noopener noreferrer" class="">https://github.com/DynamicPDF/dotnet-pdf-report-from-database</a></p>
<p>If you have any questions or comments, I would love to hear from you.</p>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label="C#" term="C#"/>
        <category label="ReportWriter" term="ReportWriter"/>
        <category label="PDF Report" term="PDF Report"/>
        <category label="SQL" term="SQL"/>
        <category label="Database" term="Database"/>
        <category label="Create PDF Reports" term="Create PDF Reports"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Converter v2 for .NET Release]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v2-for-net-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v2-for-net-release"/>
        <updated>2019-07-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This version is a huge leap forward for the product. Here are some of the great new features and improvements:]]></summary>
        <content type="html"><![CDATA[<p>This version is a huge leap forward for the product. Here are some of the great new features and improvements:</p>
<ul>
<li class="">Chromium based HTML Conversion Engine</li>
<li class="">New file type specific converter classes with advanced options</li>
<li class="">More events to monitor the conversion process</li>
<li class="">Printer driver is no longer required for most conversions</li>
<li class="">Many stability and efficiency improvements</li>
</ul>
<p><a href="https://www.dynamicpdf.com/PDF-Conversion-.NET.aspx" target="_blank" rel="noopener noreferrer" class=""><strong>Download v2 Today!</strong></a></p>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label="Converter" term="Converter"/>
        <category label="Release" term="Release"/>
        <category label="PDF Converter" term="PDF Converter"/>
        <category label="HTML to PDF" term="HTML to PDF"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Creating PDFs with Custom XMP Schema's]]></title>
        <id>https://www.dynamicpdf.com/blog/post/creating-pdfs-with-custom-xmp-schemas</id>
        <link href="https://www.dynamicpdf.com/blog/post/creating-pdfs-with-custom-xmp-schemas"/>
        <updated>2019-06-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[XMP metadata is a powerful tool for describing the contents of a PDF document. DynamicPDF has built in support for many of the most popular schemas:]]></summary>
        <content type="html"><![CDATA[<p><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/XMP%20Metadata.html" target="_blank" rel="noopener noreferrer" title="XMP Metadata" class="">XMP metadata</a> is a powerful tool for describing the contents of a PDF document. <a href="https://www.dynamicpdf.com/PDF-Suite-.NET.aspx" target="_blank" rel="noopener noreferrer" title="Generate, Merge combine PDFs" class="">DynamicPDF</a> has built in support for many of the most popular schemas:</p>
<ul>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/DynamicPDF~ceTe.DynamicPDF.Xmp.DublinCoreSchema.html" target="_blank" rel="noopener noreferrer" title="Dublin Core Schema" class="">Dublin Core Schema</a></li>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/DynamicPDF~ceTe.DynamicPDF.Xmp.BasicSchema.html" target="_blank" rel="noopener noreferrer" title="Basic Schema" class="">Basic Schema</a></li>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/DynamicPDF~ceTe.DynamicPDF.Xmp.RightsManagementSchema.html" target="_blank" rel="noopener noreferrer" title="Rights Management Schema" class="">Rights Management Schema</a></li>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/DynamicPDF~ceTe.DynamicPDF.Xmp.BasicJobTicketSchema.html" target="_blank" rel="noopener noreferrer" title="Basic Job Ticket Schema" class="">Basic Job Ticket Schema</a></li>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/DynamicPDF~ceTe.DynamicPDF.Xmp.PagedTextSchema.html" target="_blank" rel="noopener noreferrer" title="Paged-Text Schema" class="">Paged-Text Schema</a></li>
<li class=""><a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/DynamicPDF~ceTe.DynamicPDF.Xmp.PdfASchema.html" target="_blank" rel="noopener noreferrer" title="Adobe PDF Schema" class="">Adobe PDF Schema</a></li>
</ul>
<p>However, there are times when you may need to embed other metadata in a PDF. This can easily be done by creating a class that inherits from the <a href="http://docs.dynamicpdf.com/NET_Help_Library_19_07/DynamicPDF~ceTe.DynamicPDF.Xmp.XmpSchema.html" target="_blank" rel="noopener noreferrer" title="Xmp Schema" class="">XmpSchema</a> base class and overriding the Draw method. This Draw method will then be called when the XMP metadata is being added to the PDF. First let’s define a CustomSchema class that inherits from XmpSchema:</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">class CustomSchema </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> XmpSchema</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> private string userName</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> private DateTime creationDate</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> public </span><span class="token function" style="color:#d73a49">CustomSchema</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">string userName</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> DateTime creationDate</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">userName </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> userName</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> this</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">creationDate </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> creationDate</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> protected override </span><span class="token keyword" style="color:#00009f">void</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Draw</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">XmpWriter xmpWriter</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">BeginDescription</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"http://ns.adobe.com/xap/1.0/"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"xmp"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">" "</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">userName </span><span class="token operator" style="color:#393A34">!=</span><span class="token plain"> null</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Draw</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"\t\t"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> userName </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\n"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Draw</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"\t\t"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> creationDate</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">ToString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"yyyy-MM-dd'T'HH:mm:sszzz"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\n"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Draw</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"\t\t"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Producer </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\n"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Draw</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"\t\t"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Date</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">ToLocalTime</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">ToString</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"yyyy-MM-dd'T'HH:mm:sszzz"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"\n"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> xmpWriter</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">EndDescription</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre></div></div>
<p>Notice that the Draw method starts by calling the BeginDescription method and ends by calling the EndDescription method. XMP metadata is XML based, and these methods are responsible for the opening and closing XML tags for the custom schema. The Draw method that is called multiple times between them is then responsible for outputting the other XML data.</p>
<p>Next, we will add the CustomSchema class we created to the XMP metatdata of the document:</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">XmpMetadata xmpMetadata </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">XmpMetadata</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">xmpMetadata</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">AddSchema</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">new </span><span class="token function" style="color:#d73a49">CustomSchema</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"John"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> DateTime</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Now</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">XmpMetadata </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> xmpMetadata</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>The following custom metatdata will now appear in the PDFs XMP metadata:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">&lt;rdf:Description rdf:about=' ' xmlns:xmp='http://ns.adobe.com/xap/1.0/'&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> &lt;xmp:CreatedBy&gt;John&lt;/xmp:CreatedBy&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> &lt;xmp:DateCreated&gt;2019-06-03T16:18:17-04:00&lt;/xmp:DateCreated&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> &lt;xmp:CreatorTool&gt;DynamicPDF for .NET v10.12.0.40 (Build 38759)&lt;/xmp:CreatorTool&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> &lt;xmp:MetadataDate&gt;2019-06-03T16:18:17-04:00&lt;/xmp:MetadataDate&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;/rdf:Description&gt;</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="wrap-up">Wrap Up<a href="https://www.dynamicpdf.com/blog/post/creating-pdfs-with-custom-xmp-schemas#wrap-up" class="hash-link" aria-label="Direct link to Wrap Up" title="Direct link to Wrap Up" translate="no">​</a></h5>
<p>A C# Visual Studio project demonstrating this is available on GitHub:</p>
<p><a href="https://github.com/DynamicPDF/dotnet-custom-xmp-schemas" target="_blank" rel="noopener noreferrer" class="">https://github.com/DynamicPDF/dotnet-custom-xmp-schemas</a></p>
<p>If you have any questions or comments, I would love to hear from you.</p>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label="PDF Metadata" term="PDF Metadata"/>
        <category label="Create PDF" term="Create PDF"/>
        <category label="Generator" term="Generator"/>
        <category label="Merger" term="Merger"/>
        <category label="XMP Metadata" term="XMP Metadata"/>
        <category label=".NET" term=".NET"/>
        <category label=".NET Core" term=".NET Core"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Working With Bookmarks When Merging PDFs]]></title>
        <id>https://www.dynamicpdf.com/blog/post/working-with-bookmarks-when-merging-pdfs</id>
        <link href="https://www.dynamicpdf.com/blog/post/working-with-bookmarks-when-merging-pdfs"/>
        <updated>2019-05-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[When merging PDFs together using DynamicPDF Merger or Core Suite, all bookmarks (or outlines) will be added to the output PDF by default. They will appear in the order they are merged, with the first document's bookmarks coming first, followed by the next document's bookmarks. However, this is not always the desired behavior, so let's take a look at a couple of other options.]]></summary>
        <content type="html"><![CDATA[<p>When merging PDFs together using DynamicPDF <a href="https://www.dynamicpdf.com/Merge-PDF-.NET.aspx" target="_blank" rel="noopener noreferrer" class="">Merger</a> or <a href="https://www.dynamicpdf.com/PDF-Suite-.NET.aspx" target="_blank" rel="noopener noreferrer" class="">Core Suite</a>, all bookmarks (or outlines) will be added to the output PDF by default. They will appear in the order they are merged, with the first document's bookmarks coming first, followed by the next document's bookmarks. However, this is not always the desired behavior, so let's take a look at a couple of other options.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="adding-a-bookmark-for-each-document">Adding a Bookmark For Each Document<a href="https://www.dynamicpdf.com/blog/post/working-with-bookmarks-when-merging-pdfs#adding-a-bookmark-for-each-document" class="hash-link" aria-label="Direct link to Adding a Bookmark For Each Document" title="Direct link to Adding a Bookmark For Each Document" translate="no">​</a></h5>
<p>Sometimes you may want to add a bookmark for each document, but remove any of the bookmarks that are in the original PDFs. Accomplishing this can easily be done by adding a bookmark for each document and setting the Outlines merge option to false:</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">MergeDocument document </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">MergeDocument</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MergeOptions mergeOptions </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> MergeOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Append</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mergeOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Outlines </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> false</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Outlines</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Add</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Bookmark for PDF"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">XYDestination</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Pages</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Count </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">fileName</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> mergeOptions</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>The full example file is available <strong><a href="https://github.com/DynamicPDF/dotnet-merge-pdf-bookmarks/blob/master/Examples/BookmarkForEachPDFExample.cs" target="_blank" rel="noopener noreferrer" class="">here</a></strong>.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="organizing-bookmarks-for-each-document">Organizing Bookmarks For Each Document<a href="https://www.dynamicpdf.com/blog/post/working-with-bookmarks-when-merging-pdfs#organizing-bookmarks-for-each-document" class="hash-link" aria-label="Direct link to Organizing Bookmarks For Each Document" title="Direct link to Organizing Bookmarks For Each Document" translate="no">​</a></h5>
<p>Other times you may want to add a bookmark for each document and place the original document's bookmarks as children. This can quickly be done by creating a bookmark for each document and setting the RootOutline merge option property to that bookmark:</p>
<div class="language-c codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">MergeDocument document </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> new </span><span class="token function" style="color:#d73a49">MergeDocument</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">MergeOptions mergeOptions </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> MergeOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Append</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Outline outline </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Outlines</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Add</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Parent Bookmark for PDF"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> new </span><span class="token function" style="color:#d73a49">XYDestination</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Pages</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Count </span><span class="token operator" style="color:#393A34">+</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mergeOptions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">RootOutline </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> outline</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">document</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">Append</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">fileName</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> mergeOptions</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre></div></div>
<p>The full example file is available <strong><a href="https://github.com/DynamicPDF/dotnet-merge-pdf-bookmarks/blob/master/Examples/OrganizingBookmarksExample.cs" target="_blank" rel="noopener noreferrer" class="">here</a></strong>.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="wrap-up">Wrap Up<a href="https://www.dynamicpdf.com/blog/post/working-with-bookmarks-when-merging-pdfs#wrap-up" class="hash-link" aria-label="Direct link to Wrap Up" title="Direct link to Wrap Up" translate="no">​</a></h5>
<p>A C# Visual Studio project demonstrating this is available on GitHub:</p>
<p><a href="https://github.com/DynamicPDF/dotnet-merge-pdf-bookmarks" target="_blank" rel="noopener noreferrer" class="">https://github.com/DynamicPDF/dotnet-merge-pdf-bookmarks</a></p>
<p>There are of course many other options for how you may want to deal with bookmarks as well. If you have any questions or comments, I would love to hear from you.</p>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label="Merge PDF" term="Merge PDF"/>
        <category label="Merger" term="Merger"/>
        <category label="Bookmark" term="Bookmark"/>
        <category label="Outline" term="Outline"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Converter v1.1 Release]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v11-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v11-release"/>
        <updated>2019-03-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Converter is evolving. ceTe Software is excited to announce the release of DynamicPDF Converter v1.1 for .NET with a new Chromium based HTML conversion engine. Version 1.1 is a free upgrade for all current v1.0 users. Upgrade or evaluate it for free today.]]></summary>
        <content type="html"><![CDATA[<p>Converter is evolving. ceTe Software is excited to announce the release of DynamicPDF Converter v1.1 for .NET with a new Chromium based HTML conversion engine. Version 1.1 is a free upgrade for all current v1.0 users. Upgrade or evaluate it for free today.</p>
<p><a href="https://www.dynamicpdf.com/PDF-Conversion-.NET.aspx" target="_blank" rel="noopener noreferrer" class=""><strong>Download v1.1 Today!</strong></a></p>
<p>Also, stay tuned for the BETA release of v2 coming in April.</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="version-11-available-now">Version 1.1 (Available Now):<a href="https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v11-release#version-11-available-now" class="hash-link" aria-label="Direct link to Version 1.1 (Available Now):" title="Direct link to Version 1.1 (Available Now):" translate="no">​</a></h5>
<ul>
<li class="">New Chromium based HTML conversion engine</li>
<li class="">Latest bug fixes including one caused by a recent Windows update</li>
</ul>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="version-20-coming-soon">Version 2.0 (Coming Soon):<a href="https://www.dynamicpdf.com/blog/post/dynamicpdf-converter-v11-release#version-20-coming-soon" class="hash-link" aria-label="Direct link to Version 2.0 (Coming Soon):" title="Direct link to Version 2.0 (Coming Soon):" translate="no">​</a></h5>
<ul>
<li class="">Many new conversion options</li>
<li class="">Performance improvements</li>
<li class="">No print driver requirement for all conversion types</li>
</ul>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label="Release" term="Release"/>
        <category label="Converter" term="Converter"/>
        <category label="PDF Converter" term="PDF Converter"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Viewer v3 for .NET Release]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-viewer-v3-for-net-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-viewer-v3-for-net-release"/>
        <updated>2019-02-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Version 3 of our customizable, embeddable .NET PDF Viewing control is here. DynamicPDF Viewer for .NET v3 adds a lot of new features including:]]></summary>
        <content type="html"><![CDATA[<p>Version 3 of our customizable, embeddable .NET PDF Viewing control is here. DynamicPDF Viewer for .NET v3 adds a lot of new features including:</p>
<ul>
<li class="">Support for localization</li>
<li class="">On demand page thumbnail generation</li>
<li class="">Ability to assign viewer functionality to a PdfToolStrip</li>
<li class="">Customize the search result highlight color</li>
<li class="">Ability to show or hide scroll bars</li>
<li class="">An improved PDF rendering engine</li>
</ul>
<p>And best of all, it is available with 100% royalty free distribution and a free full featured evaluation edition.</p>
<p><a href="https://www.dynamicpdf.com/View-PDF-.NET.aspx" target="_blank" rel="noopener noreferrer" class=""><strong>Download v3 Today!</strong></a></p>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label=".NET PDF Viewer" term=".NET PDF Viewer"/>
        <category label="PDF Viewer .NET" term="PDF Viewer .NET"/>
        <category label="PDF Viewer Control" term="PDF Viewer Control"/>
        <category label="View PDF" term="View PDF"/>
        <category label="Viewer" term="Viewer"/>
        <category label="Winforms Control" term="Winforms Control"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Rasterizer for .NET Version 3 is Released]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-rasterizer-for-net-version-3-is-released</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-rasterizer-for-net-version-3-is-released"/>
        <updated>2019-02-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DynamicPDF Rasterizer v3 for .NET has been released! The new version has support for .NET Standard 2.X including .NET Core 2.X and ASP.NET Core 2.X. It includes an updated and improved PDF rendering engine as well as many new features and the latest bug fixes. Also, the developer edition now allows for 100% royalty free distribution to an unlimited number of servers or machines at a lower price point.]]></summary>
        <content type="html"><![CDATA[<p>DynamicPDF Rasterizer v3 for .NET has been released! The new version has support for .NET Standard 2.X including .NET Core 2.X and ASP.NET Core 2.X. It includes an updated and improved PDF rendering engine as well as many new features and the latest bug fixes. Also, the developer edition now allows for 100% royalty free distribution to an unlimited number of servers or machines at a lower price point.</p>
<p><a href="https://www.dynamicpdf.com/Rasterizer-PDF-.NET.aspx" target="_blank" rel="noopener noreferrer" class=""><strong>Download v3 Today!</strong></a></p>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label=".NET Core" term=".NET Core"/>
        <category label=".NET Standard" term=".NET Standard"/>
        <category label="C#" term="C#"/>
        <category label="VB.NET" term="VB.NET"/>
        <category label="Rasterize" term="Rasterize"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF for Java Version 10.0 BETA]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-for-java-version-100-beta</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-for-java-version-100-beta"/>
        <updated>2018-12-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The DynamicPDF for Java Version 10.0 BETA has just been posted to our site for download and testing.]]></summary>
        <content type="html"><![CDATA[<p>The DynamicPDF for Java Version 10.0 BETA has just been posted to our site for download and testing.</p>
<p><a href="https://www.dynamicpdf.com/Beta.aspx?tab=javav10" target="_blank" rel="noopener noreferrer" title="Java v10 BETA " class="">DynamicPDF for Java v10 Beta Download</a></p>
<p>We have added some great new features in version 10 including support for PDF portfolios, an HTML Area, XFA static form filling, improved memory handling for large PDFs, several new barcode types (Code 93, Aztec, GS1 Databar, Australia Post, Singapore Post etc.) and more. Take a look at the full list of <a href="https://www.dynamicpdf.com/Beta.aspx?tab=javav10" target="_blank" rel="noopener noreferrer" title="Java v10 BETA " class="">new features</a>.</p>
<p>Email <a href="mailto:support@dynamicpdf.com" target="_blank" rel="noopener noreferrer" class="">support@dynamicpdf.com</a> with any questions or issues and thanks for taking part in our Version 10 BETA.</p>]]></content>
        <author>
            <name>Anil S</name>
            <uri>https://github.com/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF PrintManager for .NET Version 4 is Released]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-printmanager-for-net-version-4-is-released</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-printmanager-for-net-version-4-is-released"/>
        <updated>2018-11-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[DynamicPDF PrintManager v4.0 for .NET is live! The new version has an updated and improved PDF rendering engine as well as the latest bug fixes. Also, the developer edition allows for royalty free distribution to an unlimited number of servers or machines.]]></summary>
        <content type="html"><![CDATA[<p>DynamicPDF PrintManager v4.0 for .NET is live! The new version has an updated and improved PDF rendering engine as well as the latest bug fixes. Also, the developer edition allows for royalty free distribution to an unlimited number of servers or machines.</p>
<p><a href="https://www.dynamicpdf.com/Print-PDF-.NET.aspx" target="_blank" rel="noopener noreferrer" class=""><strong>Download v4 Today!</strong></a></p>]]></content>
        <author>
            <name>Andrew Cochran</name>
            <uri>https://github.com/andrewcochran</uri>
        </author>
        <category label="Print PDF .NET" term="Print PDF .NET"/>
        <category label="Print PDF C#" term="Print PDF C#"/>
        <category label="Printing" term="Printing"/>
        <category label="Release" term="Release"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Viewer for .NET Version 3 BETA Release ]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-viewer-for-net-version-3-beta-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-viewer-for-net-version-3-beta-release"/>
        <updated>2018-11-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The DynamicPDF Viewer for .NET Version v3.0 BETA has just been posted to our site for download and testing.]]></summary>
        <content type="html"><![CDATA[<p>The DynamicPDF Viewer for .NET Version v3.0 BETA has just been posted to our site for download and testing.
<a href="https://www.dynamicpdf.com/Beta.aspx?tab=viewv3" target="_blank" rel="noopener noreferrer" title="Viewer Beta Download" class="">DynamicPDF Viewer for .NET v3 Beta Download</a></p>
<p>We have added some great new features in version 3 including support for UI localization, page thumbnail generation, show/hide scroll bars and many more. Take a look at the full list of <a href="https://www.dynamicpdf.com/Beta.aspx?tab=viewv3" target="_blank" rel="noopener noreferrer" title="Viewer Features" class="">new features</a>.</p>
<p>Email <a href="mailto:support@dynamicpdf.com" target="_blank" rel="noopener noreferrer" class="">support@dynamicpdf.com</a> with any questions or issues and thanks for taking part in our Version 3 BETA.</p>]]></content>
        <author>
            <name>Anil S</name>
            <uri>https://github.com/</uri>
        </author>
        <category label="PDF Viewer Control" term="PDF Viewer Control"/>
        <category label=".NET" term=".NET"/>
        <category label="Winforms Control" term="Winforms Control"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF Rasterizer for .NET Version 3 BETA Release ]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-for-net-rasterizer-version-3-beta-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-for-net-rasterizer-version-3-beta-release"/>
        <updated>2018-08-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The DynamicPDF Rasterizer for .NET Version v3.0 BETA has just been posted to our site for download and testing.]]></summary>
        <content type="html"><![CDATA[<p>The DynamicPDF Rasterizer for .NET Version v3.0 BETA has just been posted to our site for download and testing.</p>
<p><a href="http://www.dynamicpdf.com/Beta.aspx?tab=rastv3" target="_blank" rel="noopener noreferrer" title="Rasterizer v3 BETA " class="">DynamicPDF Rasterizer for .NET v3 Beta Download</a></p>
<p>We have added some great new features in version 3 including support for PDF portfolios, events to report rasterization progress, monochrome images without dithering and capability to add background color to rasterized output. Take a look at the full list of <a href="http://www.dynamicpdf.com/Beta.aspx?tab=rastv3" target="_blank" rel="noopener noreferrer" title="Rasterizer v3 BETA " class="">new features</a>.</p>
<p>Email <a href="mailto:support@dynamicpdf.com" target="_blank" rel="noopener noreferrer" class="">support@dynamicpdf.com</a> with any questions or issues and thanks for taking part in our Version 3 BETA.</p>]]></content>
        <author>
            <name>Anil S</name>
            <uri>https://github.com/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 10 Release of Dynamic PDF for .NET Core Suite ]]></title>
        <id>https://www.dynamicpdf.com/blog/post/version-10-release-of-dynamic-pdf-for-net-core-suite</id>
        <link href="https://www.dynamicpdf.com/blog/post/version-10-release-of-dynamic-pdf-for-net-core-suite"/>
        <updated>2018-08-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We are happy to announce the release of DynamicPDF for .NET Core Suite v10 (this includes our Merger, Generator and ReportWriter products).]]></summary>
        <content type="html"><![CDATA[<p>We are happy to announce the release of DynamicPDF for .NET Core Suite v10 (this includes our Merger, Generator and ReportWriter products).</p>
<p>v10 now supports .NET Standard 2.0 for seamless cross-platform deployment.</p>
<p><a href="https://www.dynamicpdf.com/PDF-Suite-.NET.aspx" target="_blank" rel="noopener noreferrer" title="v10 Download" class=""><strong>Download it Today!</strong></a>
Version 10 adds several useful and exciting new features:</p>
<ul>
<li class="">Deployment to any .NET implementation including .NET Core, .NET Framework, Mono, UWP, Xamarin.iOS and Xamarin.Android.</li>
<li class="">HTML layout engine for rapid PDF development using HTML and CSS</li>
<li class="">All new report layout engine (DLEX templates)</li>
<li class="">Take a look at a full list of<a href="https://www.dynamicpdf.com/PDF-Suite-.NET.aspx?tab=feature" target="_blank" rel="noopener noreferrer" title="Version 10 Features" class="">All Version 10 Full Features</a></li>
</ul>
<p>Free upgrades for Maintenance customers, discounted upgrades for eligible existing customers, eligible upgrades can be accessed via our Customer Area, <a href="http://www.dynamicpdf.com/customerarea" target="_blank" rel="noopener noreferrer" class="">http://www.dynamicpdf.com/customerarea</a> or we can be contacted directly, <a href="mailto:sales@dynamicpdf.com" target="_blank" rel="noopener noreferrer" class="">sales@dynamicpdf.com</a> or +1 410.772.8620.</p>]]></content>
        <author>
            <name>Anil S</name>
            <uri>https://github.com/</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label="C#" term="C#"/>
        <category label="Create" term="Create"/>
        <category label="Create PDF" term="Create PDF"/>
        <category label="Encrypt" term="Encrypt"/>
        <category label="Generate" term="Generate"/>
        <category label="Generate PDF" term="Generate PDF"/>
        <category label="Merge" term="Merge"/>
        <category label="Merge PDF" term="Merge PDF"/>
        <category label="Merger" term="Merger"/>
        <category label="PDF Library" term="PDF Library"/>
        <category label="PDF" term="PDF"/>
        <category label="ReportWriter" term="ReportWriter"/>
        <category label="Split PDF" term="Split PDF"/>
        <category label="VB.NET" term="VB.NET"/>
        <category label=".NET Standard" term=".NET Standard"/>
        <category label=".NET Core" term=".NET Core"/>
        <category label="Mono" term="Mono"/>
        <category label="UWP" term="UWP"/>
        <category label="Xamarin.iOS" term="Xamarin.iOS"/>
        <category label="Xamarin.Android" term="Xamarin.Android"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Version 9 Release of Dynamic PDF for .NET Core Suite ]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamic-pdf-for-net-core-suite-version-9-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamic-pdf-for-net-core-suite-version-9-release"/>
        <updated>2017-12-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Dynamic PDF for .NET Core Suite Version 9 has now been fully released and available for purchase.]]></summary>
        <content type="html"><![CDATA[<p>DynamicPDF for .NET Core Suite v9 (this includes our Merger, Generator and ReportWriter products) has now been fully released.  <a href="http://www.dynamicpdf.com/Products/DynamicPDFForNET/Suite/Download.csp" target="_blank" rel="noopener noreferrer" title="v9 Download" class="">Download it Today!</a></p>
<p>Version 9 adds tons of useful and exciting new features including:</p>
<ul>
<li class=""><strong>HTML Rendering</strong> (convert HTML pages including CSS)</li>
<li class=""><strong>Disk Buffering</strong> (incremental PDF rendering decreases memory usage)</li>
<li class=""><strong>Character Shaping</strong> (for fonts of complex scripts)</li>
<li class=""><strong>Over 20 New Barcodes</strong> (Aztec, Code 11, Code 93, GS1 Databar, Australia Post, etc.)</li>
<li class=""><strong>Package PDFs</strong></li>
<li class=""><strong>XFA Static Form Filling</strong></li>
<li class=""><strong>Document, Page and Field Actions</strong></li>
<li class="">Take a look at a full list of <a href="http://www.dynamicpdf.com/Products/DynamicPDFForNET/Suite/NewFeatures.csp" target="_blank" rel="noopener noreferrer" title="Version 9 Features" class="">All Version 9 Full Features</a></li>
</ul>
<p>What might be our best feature...<strong>Lower Prices</strong> across the board (all editions, all license models).</p>
<p>Free upgrades for Maintenance customers, discounted upgrades for eligible existing customers, eligible upgrades can be accessed via our Customer Area, <a href="http://www.dynamicpdf.com/customerarea" target="_blank" rel="noopener noreferrer" class="">http://www.dynamicpdf.com/customerarea</a> or we can be contacted directly, <a href="mailto:sales@cete.com" target="_blank" rel="noopener noreferrer" class="">sales@cete.com</a> or +1 410.772.8620.</p>]]></content>
        <author>
            <name>Robbie W</name>
            <uri>https://github.com/</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label="C#" term="C#"/>
        <category label="Create" term="Create"/>
        <category label="Create PDF" term="Create PDF"/>
        <category label="Encrypt" term="Encrypt"/>
        <category label="Generate" term="Generate"/>
        <category label="Generate PDF" term="Generate PDF"/>
        <category label="Merge" term="Merge"/>
        <category label="Merge PDF" term="Merge PDF"/>
        <category label="Merger" term="Merger"/>
        <category label="PDF Library" term="PDF Library"/>
        <category label="PDF" term="PDF"/>
        <category label="ReportWriter" term="ReportWriter"/>
        <category label="Split PDF" term="Split PDF"/>
        <category label="VB.NET" term="VB.NET"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DynamicPDF for .NET Core Suite Version 9 BETA Release ]]></title>
        <id>https://www.dynamicpdf.com/blog/post/dynamicpdf-for-net-core-suite-version-9-beta-release</id>
        <link href="https://www.dynamicpdf.com/blog/post/dynamicpdf-for-net-core-suite-version-9-beta-release"/>
        <updated>2017-04-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The DynamicPDF Core Suite for .NET Version 9.0 BETA is available for testing. ]]></summary>
        <content type="html"><![CDATA[<p>The DynamicPDF Core Suite for .NET Version 9.0 BETA has just been posted to our site for download and testing.</p>
<p><a href="http://www.dynamicpdf.com/Products/DynamicPDFForNET/Beta.csp" target="_blank" rel="noopener noreferrer" title="Core Suite v9 BETA " class="">DynamicPDF Core Suite for .NET v9 Beta Download</a></p>
<p>We have added some great new features in version 9 including support for PDF portfolios, an HTML Area, XFA static form filling, improved memory handling for large PDFs, several new barcode types (Code 93, Aztec, GS1 Databar, Australia Post, Singapore Post etc.) and more. Take a look at the full list of <a href="http://www.dynamicpdf.com/Products/DynamicPDFForNET/Beta.csp#Features" target="_blank" rel="noopener noreferrer" title="Core Suite v9 BETA " class="">new features</a>.</p>
<p>Email <a href="mailto:support@cete.com" target="_blank" rel="noopener noreferrer" class="">support@cete.com</a> with any questions or issues and thanks for taking part in our Version 9 BETA.</p>]]></content>
        <author>
            <name>Robbie W</name>
            <uri>https://github.com/</uri>
        </author>
        <category label=".NET" term=".NET"/>
        <category label="Generate" term="Generate"/>
        <category label="Create PDF" term="Create PDF"/>
        <category label="Creator" term="Creator"/>
        <category label="Generate PDF" term="Generate PDF"/>
        <category label="Generator" term="Generator"/>
        <category label="Merge" term="Merge"/>
        <category label="Merge PDF" term="Merge PDF"/>
        <category label="Merger" term="Merger"/>
        <category label="C#" term="C#"/>
        <category label="VB.NET" term="VB.NET"/>
    </entry>
</feed>