gpt4 book ai didi

c# - 如何正确使用 WkHTMLToSharp 将 HTML 文件转换为 PDF?

转载 作者:太空狗 更新时间:2023-10-29 15:12:14 28 4
gpt4 key购买 nike

我需要将一堆 HTML 文件(大约 30 个)转换为 PDF。如果我可以创建目录和链接页面,那就太棒了,但现在我很乐意转换单个文件:)

我已经尝试了几个解决方案,最成功的是 EO.PDF,但它在每一页上都加了一个讨厌的水印,而且它无法处理超过几兆的文件,而我的一些文件是 10 兆以上。

我已经阅读了很多关于 wkhtmltopdf 的好东西,并且我找到了它的包装器 WkHTMLToSharp。我找不到任何文档,所以我拼凑了以下代码,它引发了异常。如果能帮我解决这个问题,我将不胜感激。

我记下了导致异常的行。 (非常无用的)异常(exception)是:

"The type initializer for 'WkHtmlToXSharp.WkHtmlToPdfConverter' threw an exception."

--代码--

/// <summary>
/// Creates a PDF file from the HTML file passed in
/// </summary>
/// <param name="cFile">Full path to HTML file to generate PDF from</param>
/// <param name="pdfFile">Full path of PDF output file</param>
public static void WritePDF(string cFile, string pdfFile)
{
// Generates "The type initializer for
// 'WkHtmlToXSharp.WkHtmlToPdfConverter' threw an exception.":
WkHtmlToPdfConverter w = new WkHtmlToPdfConverter();

byte[] strHTML = w.Convert(cFile);
File.WriteAllBytes(pdfFile, strHTML);
w.Dispose();
}

在解决了缺少 DLL 的问题后,我发现那段代码实际上转换的是 HTML 字符串,而不是文件。我可以使用它,但更愿意使用 HTML 文件。

此外,PDF 文件中没有显示任何图像。它们都是 JPG(我知道 GIFS 有问题)。

最佳答案

使用 WkHtmlToXSharp。

从Github下载最新的DLL

public static string ConvertHTMLtoPDF(string htmlFullPath, string pageSize, string orientation)
{
string pdfUrl = htmlFullPath.Replace(".html", ".pdf");

try
{
#region USING WkHtmlToXSharp.dll
//IHtmlToPdfConverter converter = new WkHtmlToPdfConverter();
IHtmlToPdfConverter converter = new MultiplexingConverter();

converter.GlobalSettings.Margin.Top = "0cm";
converter.GlobalSettings.Margin.Bottom = "0cm";
converter.GlobalSettings.Margin.Left = "0cm";
converter.GlobalSettings.Margin.Right = "0cm";
converter.GlobalSettings.Orientation = (PdfOrientation)Enum.Parse(typeof(PdfOrientation), orientation);
if (!string.IsNullOrEmpty(pageSize))
converter.GlobalSettings.Size.PageSize = (PdfPageSize)Enum.Parse(typeof(PdfPageSize), pageSize);

converter.ObjectSettings.Page = htmlFullPath;
converter.ObjectSettings.Web.EnablePlugins = true;
converter.ObjectSettings.Web.EnableJavascript = true;
converter.ObjectSettings.Web.Background = true;
converter.ObjectSettings.Web.LoadImages = true;
converter.ObjectSettings.Load.LoadErrorHandling = LoadErrorHandlingType.ignore;

Byte[] bufferPDF = converter.Convert();

System.IO.File.WriteAllBytes(pdfUrl, bufferPDF);

converter.Dispose();

#endregion
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}

return pdfUrl;
}

关于c# - 如何正确使用 WkHTMLToSharp 将 HTML 文件转换为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6723037/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com