隐藏

在.NET(C#)中将HTML转成PDF使用GemBox.Document实现的实例

发布:2023/1/3 22:34:46作者:管理员 来源:本站 浏览次数:324

1、安装引用GemBox.Document

1)使用Nuget界面管理器


直接分别搜索 "GemBox.Document",找到对应的点安装即可。


相关文档:VS(Visual Studio)中Nuget的使用


2)使用Package Manager命令安装


PM> Install-Package GemBox.Document

2、使用GemBox.Document将HTML转换PDF

GemBox.Document 支持内联样式、内部和外部样式表。它使用 CSS 属性的子集和 Microsoft Word 中的一些附加任意属性(如mso-pagination和mso-rotate)。它还使用@media print { ... }。转换代码如下,


using GemBox.Document;


class Program

{

   static void Main()

   {

       // 如果使用专业版,需要设置序列号放在下面。

       ComponentInfo.SetLicense("FREE-LIMITED-KEY");


       // 加载html文件

       DocumentModel document = DocumentModel.Load("Input.html");


       //当读取任何HTML内容时,都会创建一个Section元素。

       //我们可以使用Section元素来指定各种页面选项。

       Section section = document.Sections[0];

       PageSetup pageSetup = section.PageSetup;

       PageMargins pageMargins = pageSetup.PageMargins;

       pageMargins.Top = pageMargins.Bottom = pageMargins.Left = pageMargins.Right = 0;


       // 保存输出pdf文件

       document.Save("Output.pdf");

   }

}

3、将 HTML 转换为 PDF使用页眉和页脚

GemBox.Document 支持HeaderFooter从 HTML 内容创建元素。如果


是 HTML 文件中的第一个元素,则其内容将作为文档的默认标题读取;如果


是 HTML 文件中的最后一个元素,则其内容将作为文档的默认页脚读取。代码如下,


using System.IO;

using GemBox.Document;


class Program

{

   static void Main()

   {

       // 如果使用专业版,需要设置序列号放在下面。

       ComponentInfo.SetLicense("FREE-LIMITED-KEY");


       var html = @"

<html>

<style>

 @page {

   size: A5 landscape;

   margin: 6cm 1cm 1cm;

   mso-header-margin: 1cm;

   mso-footer-margin: 1cm;

 }


 body {

   background: #EDEDED;

   border: 1pt solid black;

   padding: 20pt;

 }


 br {

   page-break-before: always;

 }


 p { margin: 0; }

 header { color: #FF0000; text-align: center; }

 main { color: #00B050; }

 footer { color: #0070C0; text-align: right; }

</style>


<body>

 <header>

   <p>Header text.</p>

 </header>

 <main>

   <p>First page.</p>

   <br>

   <p>Second page.</p>

   <br>

   <p>Third page.</p>

   <br>

   <p>Fourth page.</p>

 </main>

 <footer>

   <p>Footer text.</p>

   <p>Page <span style='mso-field-code:PAGE'>1</span> of <span style='mso-field-code:NUMPAGES'>1</span></p>

 </footer>

</body>

</html>";


       var htmlLoadOptions = new HtmlLoadOptions();

       using (var htmlStream = new MemoryStream(htmlLoadOptions.Encoding.GetBytes(html)))

       {

           // 将输入的HTML文本加载为流。

           var document = DocumentModel.Load(htmlStream, htmlLoadOptions);

           // 保存输出pdf文件

           document.Save("Output.pdf");

       }

   }

}