Нужна альтернатива EO.Pdf для преобразования HTML в PDF в C #, wkhtmltopdf? - PullRequest
2 голосов
/ 13 июля 2011

Я создаю каталог фильмов в формате HTML, а затем преобразую его в формат PDF. Я использовал EO.Pdf, и он работал для моего небольшого тестового образца. Однако, когда я запускаю его для всего списка фильмов, полученный HTML-файл имеет размер около 8000 строк и 7 МБ. EO.Pdf истекает при попытке конвертировать. Я считаю, что это ограничение бесплатной версии, поскольку я могу скопировать весь HTML-код и вставить его в свою онлайн-демонстрацию, и это работает.

Я ищу альтернативу для использования. Я плохо разбираюсь в командной строке или в работе с внешними программами, поэтому я бы предпочел что-то, что я мог бы добавить в библиотеку .NET и легко использовать. Я признаю, что использовать EO.Pdf было легко, как только я добавил dll в библиотеку и добавил пространство имен, потребовалась одна строка кода для преобразования либо HTML-кода, либо HTML-файла в PDF. Недостатки, с которыми я столкнулся, заключались в том, что на каждой странице была печать (шрифтом 16pt) со своим веб-сайтом. Это также не получило бы половину моих изображений, не знаю почему. Я использовал относительный URL-адрес в файле HTML к изображениям и создал файл PDF в том же каталоге, что и файл HTML.

Я не хочу заново создавать макет в PDF, поэтому я думаю, что что-то вроде iTextSharp отсутствует. Я читал немного о чем-то, что называется wkhtmltopdf или о чем-то странном. Это звучало хорошо, но мне нужна была обертка, и я понятия не имею, как этого достичь или использовать.

Буду признателен за предложения с основными инструкциями, как их использовать. Либо библиотека, и пара строк о том, как ее использовать. Или, если вы можете сказать мне, как настроить / использовать wkhtmltopdf, я был бы очень рад!

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 13 июля 2011

Я использую 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


Я только что увидел, что кто-то реализует оболочку c # для wkhtmltopdf ,Я не проверял это, но, возможно, стоит посмотреть.

2 голосов
/ 06 сентября 2016

После долгих поисков я решил использовать 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

И нет, я никоим образом не связан с ними.

1 голос
/ 14 ноября 2014

Я рекомендую ExpertPdf.

ExpertPdf Html To Pdf Converter очень прост в использовании и поддерживает новейшие 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-документ в поток файлов на диске.

...