需要EO.Pdf的替代品,用于在c#中将HTML转换为PDF, wkhtmltopdf

本文关键字:HTML 中将 转换 wkhtmltopdf PDF Pdf EO 替代品 用于 需要 | 更新日期: 2023-09-27 18:02:08

我正在创建一个HTML电影目录,然后将其转换为PDF。我使用的是EO.Pdf,它对我的小测试样本有效。但是,当我对整个电影列表运行它时,生成的HTML文件有近8000行和7MB。pdf在尝试转换时超时。我相信这是免费版本的限制,因为我可以复制整个HTML并将其粘贴到他们的在线演示中,并且它可以工作。

我正在寻找一个替代使用。我不擅长命令行或运行外部程序,所以我更喜欢可以添加到。net库并易于使用的东西。我承认使用EO.Pdf很容易,一旦我将dll添加到库中并添加名称空间,只需一行代码就可以将HTML代码或HTML文件转换为PDF。我遇到的缺点是,他们在每页上都有一个印有他们网站的邮票(用16pt字体)。它也不能接收我一半的图像,不知道为什么。我在HTML文件中使用了相对URL,并在与HTML文件相同的目录中创建了PDF。

我不想在PDF中重新创建布局,所以我认为像iTextSharp这样的东西已经过时了。我读过一些关于wkhtmltopdf之类的东西。这听起来不错,但需要一个包装器,我不知道如何完成或使用它。

我希望你能给我一些建议,告诉我如何使用它们。一个库和几行关于如何使用它。或者如果你能告诉我如何设置/使用wkhtmltopdf,我会非常感激!

提前感谢!

需要EO.Pdf的替代品,用于在c#中将HTML转换为PDF, wkhtmltopdf

我使用wkhtmltopdf,我很高兴。一种用法:

Process p = new Process();
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "wkhtmltopdf.exe";
p.StartInfo.Arguments = "-O landscape <<URL>> -";
p.Start();
然后你可以得到一个流:
p.StandardOutput.BaseStream

我使用这个是因为我需要一个流,当然你可以用不同的方式调用它。


这里也有一个关于调用wkhtmltopdf

的讨论

我刚刚看到,有人正在实现wkhtmltopdf的c#包装器。我还没有测试过,但可能值得一看。

经过多次搜索,我决定使用HiQPdf。它使用简单,速度足以满足我的需求,价格对我来说是可以接受的。

var converter = new HiQPdf.HtmlToPdf();
converter.Document.PageSize = PdfPageSize.Letter;
converter.Document.PageOrientation = PdfPageOrientation.Portrait;
converter.Document.Margins = new PdfMargins(15); // Unit = Points               
converter.ConvertHtmlToFile(htmlText, null, fileName);

它甚至包括一个免费的版本,如果你可以保持在3页。http://www.hiqpdf.com/free-html-to-pdf-converter.aspx

不,我和他们没有任何关系。

我推荐ExpertPdf。

ExpertPdf Html到Pdf转换器是非常容易使用,它支持最新的html5/css3。您可以将整个url转换为pdf:

using ExpertPdf.HtmlToPdf; 
byte[] pdfBytes = new PdfConverter().GetPdfBytesFromUrl(url);

或HTML字符串:

using ExpertPdf.HtmlToPdf; 
byte[] pdfBytes = new PdfConverter().GetPdfBytesFromHtmlString(html, baseUrl);

您还可以选择直接将生成的pdf文档保存到磁盘上的文件流。