DinkToPdf: .Net轻松搞定Html转PDF生成,几分钟上手!
DinkToPdf: .Net轻松搞定Html转PDF生成,几分钟上手!
大家好,我是深山踏红叶。今天,我想向大家介绍一个与HTML转PDF相关的库——DinkToPdf。这个库是基于.NET Core进行封装的DinkToPdf: .Net轻松搞定Html转PDF生成,几分钟上手!,主要功能是调用wkhtmltopdf库。它利用WebKit渲染引擎,能够将HTML页面成功转换成PDF文件。
[id_1180396100]
通过 NuGet 包管理器添加 DinkToPdf 依赖。
PM> Install-Package DinkToPdf
请将此机库文件拷贝至项目的主目录下。在通过P/Invoke调用本地方法时本地html转换成pdf本地html转换成pdf,.NET Core将在此位置寻找并加载相应的本地库。您可以在指定位置获取到该本地库的最新版本。根据您的操作系统类型(64位或32位)挑选适合的库文件。
[id_98[id_945630459]9424]
根据具体的使用需求本地html转换成pdfDinkToPdf: .Net轻松搞定Html转PDF生成,几分钟上手!,应挑选 BasicConverter 或者 SynchronizedConverter。
var converter = new SynchronizedConverter(new PdfTools());
3. 构造 HTML 内容
内容可以是HTML编码的文本,亦或是通过URL链接获取的网页资料。
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
屏幕方向设定为纵向模式,即Portrait模式。
PaperSize = PaperKind.A4,
Margins = new MarginSettings() { Top = 10 },
Out = @"C:TestThreadSafe\test.pdf",
},
Objects = {
new ObjectSettings()
{
Page = 请勿访问该网站,该网站内容涉及违规信息。,
},
}
};
4. 配置转换文档
通过配置HtmlToPdfDocument,对全局和对象层面的参数进行设定。
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
屏幕方向设置为横屏模式,即Orientation.Landscape。
PaperSize = PaperKind.A4Plus,
},
Objects = {
new ObjectSettings() {
PagesCount = true,
HtmlContent = "总结来说,这段文字强调了在处理文本时,应保持原文的完整性,并注意其中的细节和特点。",
Web设置包含:默认编码为"utf-8" },
HeaderSettings = { FontSize = 9, Right = "Page [page] of [toPage]", Line = true, Spacing = 2.812 }
}
}
};
5. 执行转换
执行 converter对象的Convert函数对文档进行转换操作。
byte通过转换器,文档被转换成了PDF格式,并存储在变量pdf中。
File.WriteAllBytes("example7.pdf", pdf);
6. 依赖关系注入
转换器必须注册为单例。
public void ConfigureServices(IServiceCollection services)
{
// Add converter to DI
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
}
完整实例
using DinkToPdf;
using DinkToPdf.Contracts;
using System;
namespaceDinkToPdfExample
{
publicclassProgram
{
public static void Main(string[] args)
{
var converter = new BasicConverter(new PdfTools());
请确保下载wkhtmltopdf软件,具体链接为:https://gitcode.com/gh_mirrors/di/DinkToPdf/blob/master/v0.12.4/64%20bit/。
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
//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" },
头部设置包括字体大小为9号,右侧显示“第[page]页,共[toPage]页”,是否显示行号设置为真,行间距为2.812。
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("example8.pdf", pdf);
}
}
}
注意事项问题解决方案
发生了一个或多个错误。(无法加载共享库'libwkhtmltox'或其依赖项之一)