我正在创建电影的HTML目录,然后将其转换为PDF。我正在使用EO.Pdf,它适用于我的小测试样本。但是,当我针对整个电影列表运行它时,生成的HTML文件将近8000行和7MB。 EO.Pdf在尝试转换时超时。我相信它是免费版本的限制,因为我可以复制整个HTML并将其粘贴到他们的在线演示中,并且它可以工作。
我正在寻找另一种选择。我不熟悉命令行,或运行外部程序,所以我更喜欢我可以添加到.NET库并轻松使用的东西。我承认使用EO.Pdf很简单,一旦我将dll添加到libarary并添加了命名空间,就需要一行代码将HTML代码或HTML文件转换为PDF。我遇到的缺点是,他们的网站上有每个页面(16pt字体)的印章。它也不会拿起我的一半图像,不知道为什么。我在HTML文件中使用了相对URL到图像,我在与HTML文件相同的目录中创建了PDF。
我不想在PDF中重新创建布局,所以我觉得像iTextSharp这样的东西已经出来了。我已经读过一些关于像wkhtmltopdf这样的东西或类似的东西。它听起来不错,但需要一个包装器,我不知道如何实现它,或者使用它。
我很感激有关如何使用它们的基本说明的建议。关于如何使用它的库和几行。或者如果你能告诉我如何设置/使用wkhtmltopdf,我会非常感激!
提前致谢!
答案 0 :(得分:3)
我正在使用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
我使用了这个,因为我需要一个流,当然你可以用不同的方式调用它。
以下是关于invoking wkhtmltopdf
的讨论我刚看到,有人正在实施c# wrapper for wkhtmltopdf。我没有测试过,但可能值得一看。
答案 1 :(得分:2)
经过多次搜索,我决定使用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
不,我与他们没有任何联系。
答案 2 :(得分:1)
我推荐ExpertPdf。
ExpertPdf Html To Pdf Converter非常易于使用,它支持最新的html5 / css3。您可以将整个网址转换为pdf:
using ExpertPdf.HtmlToPdf;
byte[] pdfBytes = new PdfConverter().GetPdfBytesFromUrl(url);
或html字符串:
using ExpertPdf.HtmlToPdf;
byte[] pdfBytes = new PdfConverter().GetPdfBytesFromHtmlString(html, baseUrl);
您还可以直接将生成的pdf文档保存到磁盘上的文件流中。