摘要:大家好,我是深山踏红叶,今天来分享一个Html 转 PDF 的相关库,DinkToPdf 是一个基于 .NET Core 的封装库,用于调用 wkhtmltopdf 库,通过 WebKit 渲染引擎将 HTML 页面转换为 PDF 文件。
大家好,我是深山踏红叶,今天来分享一个Html 转 PDF 的相关库,DinkToPdf 是一个基于 .NET Core 的封装库,用于调用 wkhtmltopdf 库,通过 WebKit 渲染引擎将 HTML 页面转换为 PDF 文件。
• HTML 到 PDF 的转换:支持将 HTML 内容转换为 PDF 文件,同时提供多种页面设置和布局选项。
• 多线程支持:提供了同步转换器,适用于多线程应用程序和 Web 服务器。
• 丰富的配置选项:可以设置纸张大小、方向、边距、颜色模式等,还可以自定义页眉和页脚。
通过 NuGet 包管理器添加 DinkToPdf 依赖。
PM> Install-Package DinkToPdf将本机库复制到项目的根文件夹。使用 P/Invoke 调用本机方法时,.NET Core 会从那里加载本机库。您可以在此处找到最新版本的本机库。为您的操作系统和平台(64 位或 32 位)选择合适的库。
2. 创建转换器实例根据应用场景选择BasicConverter或。varconverter =newSynchronizedConverter(newPdfTools);3. 构造 HTML 内容可以是直接的 HTML 字符串,也可以是通过 URL 获取的页面内容。
vardoc =newHtmlToPdfDocument{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
Margins =newMarginSettings { Top =10},
Out = @"C:TestThreadSafe\test.pdf",
},
Objects = {
newObjectSettings
{
Page = "https://www.dotnetshare.com/",
},
}
};4. 配置转换文档通过HtmlToPdfDocument设置全局参数和对象参数。vardoc =newHtmlToPdfDocument
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.A4Plus,
},
Objects = {
newObjectSettings {
PagesCount =true
HtmlContent = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. In consectetur mauris eget ultrices iaculis. Ut odio viverra, molestie lectus nec, venenatis turpis.",
WebSettings = { DefaultEncoding = "utf-8" },
HeaderSettings = { FontSize =9, Right = "Page of [toPage]", Line =true, Spacing =2.812}
}
}
};5. 执行转换调用converter.Convert(doc)方法完成转换。byte pdf = converter.Convert(doc);
File.WriteAllBytes("example7.pdf", pdf);6. 依赖关系注入
转换器必须注册为单例。
publicvoidConfigureServices(IServiceCollection services){
// Add converter to DI
services.AddSingleton(typeof(IConverter),newSynchronizedConverter(newPdfTools));
}usingDinkToPdf;
usingDinkToPdf.Contracts;
usingSystem;
namespaceDinkToPdfExample
{
publicclassProgram
{
publicstaticvoidMain(stringargs)
{
varconverter =newBasicConverter(newPdfTools);
//需要下载wkhtmltopdf工具 https://gitcode.com/gh_mirrors/di/DinkToPdf/blob/master/v0.12.4/64 bit/
vardoc =newHtmlToPdfDocument
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
newObjectSettings {
//PagesCount = true,
HtmlContent = @"
Title
table {
width: 50%;
border-collapse: collapse;
margin: 20px auto;
}
th, td {
border: 1px solid #000;
padding: 8px;
text-align: center;
}
th {
background-color: #f2f2f2;
}
Netshare
姓名
年龄
职业
张三
25
程序员
李四
30
设计师
王五
28
产品经理
",
WebSettings = { DefaultEncoding = "utf-8" },
//HeaderSettings = { FontSize = 9, Right = "Page of [toPage]", Line = true, Spacing = 2.812 }
}
}
};
byte pdf = converter.Convert(doc);
File.WriteAllBytes("example8.pdf", pdf);
}
}
}
文件地址:https://github.com/rdvojmoc/DinkToPdf/tree/master/v0.12.4
Update="libwkhtmltox.dll">
Always
Update="libwkhtmltox.dylib">
Update="libwkhtmltox.so">
来源:opendotnet