Альтернативы iTextSharp для преобразования HTML в PDF - PullRequest
0 голосов
/ 23 декабря 2011

Я хочу преобразовать файл HTML в PDF, используя iTextSharp .

Я использовал этот код .

Затем я сделал следующее, чтобы преобразовать его в pdf:

HTMLWorker htmlWorker = new HTMLWorker(document);
htmlWorker.Parse(new StringReader(results));
document.Close();

Однако ни один из CSS не анализируется. Любые альтернативы?

Ответы [ 4 ]

12 голосов
/ 28 декабря 2011

18 месяцев назад мы полностью протестировали большинство доступных конвертеров html-в-pdf (платных и бесплатных). В итоге, лучшим конвертером html-to-pdf стала бесплатная программа с открытым исходным кодом, которая называется wkhtmltopdf .

Он управляется из командной строки, использует механизм рендеринга webkit и точно (и, что более важно, последовательно) превращает веб-страницы в красивые PDF-файлы. Он также имеет множество полезных ключей командной строки, дает вам полный контроль над верхним / нижним колонтитулом, опционально создает страницы оглавления и работает очень и очень быстро. И - поскольку он управляется из командной строки, у него есть дополнительный бонус - его легко использовать для генерации пакетов. Вы просто не можете пойти не так.

В качестве sidenote, эта программа также имеет родственную программу (входит в комплект поставки) под названием wkhtmltoimage, которая работает точно так же, но преобразует веб-страницы в различные форматы изображений. Это также очень полезно, и мы используем эту функцию для создания снимков наших веб-инструментов при создании предложений для рабочих мест.

Я знаю, что я звучу как настоящий фанат, но это не так. Я просто тот, кому так надоели все конвертеры, что я был поражен вдвойне, когда мы нашли wkhtmltopdf. Я просто не могу рекомендовать эту маленькую программу достаточно.

2 голосов
/ 28 декабря 2011

не загружается автоматически.Вам нужно сделать это вручную следующим образом.

 StyleSheet ss = new StyleSheet();
 ss.LoadStyle("body", "leading", "16,0");
 ss.LoadStyle("p", "style", "font-family:Times New Roman");

, а затем вы используете

List<IElement> htmlToPDF = HTMLWorker.ParseToList(new StringReader("<font face=\"Times\">" + html + "</font>"), style);

foreach (IElement element in htmlToPDF ) {
    document.Add(element);
  }

, однако в itextsharp работают только некоторые стили, но не все.

На самом деле вы должны попробовать XMLWorker , плагин для itextsharp.Это только что выпустило в этом месяце.Он может обрабатывать html намного лучше, чем при использовании только itextsharp.

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

2 голосов
/ 23 декабря 2011

В качестве альтернативы я могу порекомендовать только ABCpdf , который мы успешно используем для преобразования большого количества HTML-документов в PDF как часть одного из наших веб-приложений.

1 голос
/ 01 октября 2013

Лучше поздно, чем никогда, но вот довольно хороший пример того, как это сделать, а также объясняет, что возможно, а что нет: http://www.thiscouldbeuseful.com/2012/04/itextsharp-to-rescue-converting-html-to.html.

Я предпочитаю iTextSharp, потому что imo обеспечивает большую функциональность.

...