Конвертировать HTML в PDF в .NET - PullRequest
387 голосов
/ 19 февраля 2009

Я хочу создать PDF, передав содержимое HTML функции. Для этого я использовал iTextSharp, но он плохо работает, когда сталкивается с таблицами, а компоновка просто становится грязной.

Есть ли лучший способ?

Ответы [ 33 ]

0 голосов
/ 03 сентября 2015

Вы также можете проверить Spire , это позволит вам создать HTML to PDF с помощью этого простого куска кода

 string htmlCode = "<p>This is a p tag</p>";

//use single thread to generate the pdf from above html code
Thread thread = new Thread(() =>
{ pdf.LoadFromHTML(htmlCode, false, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();

// Save the file to PDF and preview it.
pdf.SaveToFile("output.pdf");
System.Diagnostics.Process.Start("output.pdf");

Подробная статья: Как конвертировать HTML в PDF в asp.net C #

0 голосов
/ 13 сентября 2014

С Winnovative HTML в PDF конвертер вы можете преобразовать строку HTML в одну строку

byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlString, baseUrl);

Базовый URL-адрес используется для разрешения изображений, на которые ссылаются относительные URL-адреса, в HTML-строке. В качестве альтернативы вы можете использовать полные URL в HTML или встраивать изображения, используя src = "data: image / png" для тега image.

В ответ на комментарий пользователя 'fubaar' о Winnovative конвертере необходимо внести исправления. Конвертер не использует IE в качестве движка рендеринга. Это фактически не зависит от установленного программного обеспечения, и рендеринг совместим с движком WebKit.

0 голосов
/ 18 марта 2015

Если вы хотите, чтобы пользователь загружал PDF-страницу с отображаемой страницей в браузере, тогда самое простое решение проблемы -

window.print(); 

на стороне клиента это предложит пользователю сохранить pdf текущей страницы. Вы также можете настроить внешний вид PDF, связав стиль

<link rel="stylesheet" type="text/css" href="print.css" media="print">

print.css применяется к HTML во время печати. ​​

Ограничение

Вы не можете сохранить файл на стороне сервера. Пользователю предлагается распечатать страницу, чем он должен был сохранить страницу вручную. Страница должна отображаться на вкладке.

...