如何使用 api2pdf/htmlagilitypack 将 HTML C# 代码转换为 pdf

How to convert HTML C# code to pdf, using api2pdf/htmlagilitypack

我正在尝试将用 C# 编写的 HTML 代码转换为 PDF,但在尝试这样做时遇到了问题。我收到一条错误消息,指出无法 HTMLAgilityPack.HTMLDocument 反对 Api2PdfChromeHtmltoPDFRequest。有没有办法使用这 2 个库或任何更好的解决方案?

var html = String.Format(@"<!DOCTYPE html>
<html><h1> Hello world </h1> </html>");

var doc = new HtmlDocument();
doc.LoadHtml(html)

Api2Pdf.Api2PdfResult emailConversionResult = a2pClient.Chrome.HtmlToPdf(doc);

根据文档,HtmlToPdf 需要一个 ChromeHtmlToPdfRequest 对象 (https://github.com/Api2Pdf/api2pdf.dotnet/blob/ba7da6496a45e1e07627158bc76d9ea48cdc6255/Api2Pdf.DotNet/RequestModels.cs#L42)

这也是错误试图告诉您的内容。您正在传递 HTMLAgilityPack.HTMLDocument 类型的对象,但 HtmlToPdf 方法需要一个 ChromeHtmlToPdfRequest 类型的对象。然后编译器抱怨它无法将第一个转换为后者并向您抛出错误。

因此您的代码应如下所示:

var emailConversionResult = a2pClient.Chrome.HtmlToPdf(new ChromeHtmlToPdfRequest
{
     Html = html
});

Html 这里是一个字符串。所以如果你因为某些原因必须使用 HtmlAgilityPack,你也可以使用这个片段:

var emailConversionResult = a2pClient.Chrome.HtmlToPdf(new ChromeHtmlToPdfRequest
{
     Html = doc.DocumentNode.OuterHtml
});