1. 程式人生 > >.NET使用DinkToPdf將HTML轉成PDF

.NET使用DinkToPdf將HTML轉成PDF

## 0.介紹 > C# .NET Core wrapper for wkhtmltopdf library that uses Webkit engine to convert HTML pages to PDF. 最近瀏覽文章的時候發現DinkToPdf框架,可以利用HTML轉換成PDF,與我早期使用ITextSharp 框架構建PDF的方式不太一樣。DinkToPdf直接將HTML轉成PDF,HTML的構造直觀且簡單。這種方式可能可以成為不錯的選擇! 下面為大家簡單介紹DinkToPdf的使用方式。 ## 1. 參考資料 > Github https://github.com/rdvojmoc/DinkToPdf ## 2.核心內容 - #### 構造HtmlToPdfDocument物件 ##### Html文字形式 ``` string html = @"

Html文字

"; var doc = new HtmlToPdfDocument() { GlobalSettings = { ColorMode = ColorMode.Color, Orientation = Orientation.Landscape, PaperSize = PaperKind.A4, }, Objects = { new ObjectSettings() { PagesCount = true, HtmlContent = htmlContent, WebSettings = { DefaultEncoding = "utf-8" }, HeaderSettings = { FontSize = 9, Right = "Page [page] of [toPage]", Line = true }, FooterSettings = { FontSize = 9, Right = "Page [page] of [toPage]" } } } }; ``` ##### URL方式 ``` string url = ""https://www.baidu.com/"; var doc = new HtmlToPdfDocument() { GlobalSettings = { PaperSize = PaperKind.A4Small }, Objects = { new ObjectSettings() { Page = url, } } }; ``` - #### HtmlToPdfDocument 轉成 PDF ``` var converter = new BasicConverter(new PdfTools()); byte[] pdf = converter.Convert(doc); ``` - #### 生成PDF ``` if (!Directory.Exists("Files")) { Directory.CreateDirectory("Files"); } using (FileStream stream = new FileStream(@"Files\" + DateTime.UtcNow.Ticks.ToString() + ".pdf", FileMode.Create)) { stream.Write(pdf, 0, pdf.Length); } ``` - #### 注意點 框架依賴於wkhtmltopdf,在自己部署的時候如果提示缺少dll,記得去官方Git上下載(樣例原始碼已經複製了64位的dll) > https://github.com/rdvojmoc/DinkToPdf/tree/master/v0.12.4 ## 3.效果圖展示 - #### Html文字形式 ##### w3c表格截圖 ![](https://img2020.cnblogs.com/blog/870711/202102/870711-20210204224048208-855643127.png) ##### pdf生成結果圖 ![](https://img2020.cnblogs.com/blog/870711/202102/870711-20210204224153501-135886120.png) - #### URL方式 ##### 百度網址生成pdf效果圖 ![](https://img2020.cnblogs.com/blog/870711/202102/870711-20210204224242208-628252641.png) ## 4.樣例原始碼地址 > https://github.com/Impartsoft/Bins/tree/main/DinkToPdfDemo