在日常開發中,我們常常需要將動態生成的 HTML 內容轉換為 PDF 文件。無論是用于打印、存檔還是分享,PDF 格式都因其跨平臺兼容性和穩定性而備受青睞。今天,我們就來介紹一個強大的工具——HtmlToPDFCore,可以輕松實現 HTML 到 PDF 的轉換,這真是輕便快捷重量級。
一、HtmlToPDFCore 是什么?
HtmlToPDFCore 是一個基于 .NET Core 的開源庫,能夠將 HTML 文件或字符串轉換為高質量的 PDF 文件。內置了適用于 Windows、Linux 和 macOS 的 Rotativa 文件,因此可以無縫運行在多種環境中。
主要特點:
- ? 支持多平臺(Windows、Linux、macOS)。
- ? 提供豐富的配置選項(如頁面大小、方向、邊距等)。
二、適用場景
HtmlToPDFCore 可以廣泛應用于以下場景:
- 1. 生成報表:將動態生成的 HTML 報表轉換為 PDF。
- 2. 合同和協議:將在線編輯的合同內容保存為 PDF。
- 3. 發票和收據:將交易記錄導出為 PDF 文件。
- 4. 文檔歸檔:將網頁內容保存為 PDF 以便長期存儲。
三、環境支持
HtmlToPDFCore 已經過測試,支持以下運行環境:
- ? Microsoft Azure 應用服務(使用 Linux 服務計劃)
四、安裝方法
在 Visual Studio 中,可以通過 NuGet 包管理器控制臺安裝 HtmlToPDFCore。執行以下命令即可完成安裝:
Install-Package HtmlToPDFCore
如果你使用的是 .NET CLI,也可以通過以下命令安裝:
dotnet add package HtmlToPDFCore
五、快速上手
展示如何使用 HtmlToPDFCore 將 HTML 字符串轉換為 PDF 文件
using System;
using System.IO;
using Wkhtmltopdf.NetCore;
classProgram
{
static void Main(string[] args)
{
// 定義 HTML 內容
var html = @"
<html>
<title>PDF 示例</title>
<body>
<b>PDF 示例 - Carlos dos Santos</b>
<b> 公眾號:Net分享 </b>
<b> https://mp.weixin.qq.com/s/LWuzVwJ6J9UyqnmP_1ecPw</b>
<b>NetShre :https://www.dotnetshare.com</b>
</body>
</html>";
// 初始化 HtmlToPDF 對象
var pdf = new HtmlToPDF();
// (可選)設置 PDF 參數
// pdf.DisableSmartShrinking = true;
// pdf.Margins = new PageMargins(5, 5, 5, 5);
// pdf.Orientation = PageOrientation.Landscape;
// pdf.PageSize = Wkhtmltopdf.NetCore.Options.Size.A4;
// 將 HTML 轉換為 PDF 字節流
var buffer = pdf.ReturnPDF(html);
// 定義輸出文件路徑
string pdfFile = "output.pdf";
// 如果文件已存在,則刪除
if (File.Exists(pdfFile)) File.Delete(pdfFile);
// 將字節流寫入文件
using (var f = new FileStream(pdfFile, FileMode.Create))
{
f.Write(buffer, 0, buffer.Length);
f.Flush();
}
Console.WriteLine("PDF 文件已成功生成!");
}
}
六、高級配置
HtmlToPDFCore 提供了許多高級配置選項,可以幫助你更精細地控制生成的 PDF 文件。以下是一些常用的配置參數:
| |
DisableSmartShrinking | |
Margins | |
Orientation | |
PageSize | |
七、項目地址
https://github.com/carloscds/HtmlToPDFCore?
八、總結
HtmlToPDFCore 是一個功能強大且易于使用的工具,可以幫助開發者快速實現 HTML 到 PDF 的轉換。無論你是需要生成報表、合同還是其他類型的文檔,它都能滿足你的需求。
需要注意的是在liunx環境或者是docker需要安裝對應的字體,趕快動手試試吧!
該文章在 2025/3/24 17:29:11 編輯過