У меня была такая же ошибка. Я нашел решение проблемы сейчас. Проблема заключалась в том, что клиентская программа заканчивалась до того, как сервер прочитал потоки.
предложение Winnovative библиотека.Net PDF, которая поддерживает ввод HTML. Они предлагают неограниченное бесплатная демонстрационная версия . В зависимости от того, как Вы хотите развернуть свой проект, это могло бы быть достаточно.
Это зависит от любых других требований, которые Вы имеете.
действительно простой А, но не легко развертываемое решение должен использовать управление WebBrowser для загрузки HTML и затем использования печати Метода печати к локально установленному принтеру PDF. Существует несколько свободных доступных принтеров PDF, и управление WebBrowser является частью платформы .NET.
РЕДАКТИРОВАНИЕ: Если Вы, HTML является XHtml, который можно использовать PDFizer, чтобы сделать задание.
Если Вам действительно не нужна истинная библиотека.Net PDF, существует многочисленное свободный HTML к инструментам PDF , многие из которых могут работать от командной строки.
Одно решение состояло бы в том, чтобы выбрать одного из тех и затем записать тонкую обертку вокруг этого в C#. Например, как сделано в это учебное руководство .
PDF Vision хорошее. Однако для его использования необходимо иметь полное доверие. Я уже написал по электронной почте и спросил, почему мой HTML не конвертируется на сервере, но он отлично работает на localhost.
Последнее обновление: сентябрь 2019
Это - список опций для HTML к преобразованию PDF в.NET, которую я соединил (некоторые освобождают некоторых заплаченных)
HtmlRenderer. PdfSharp
PuppeteerSharp PdfSharp/1.5.1-beta1
EO.Pdf
WnvHtmlToPdf_x64
IronPdf
Spire.PDF
Aspose.Html
EvoPDF
ExpertPdfHtmlToPdf
Zetpdf
PDFtron
WkHtmlToXSharp
SelectPDF
, Если ни одна из опций выше не помогает Вам, можно ли всегда искать пакеты NuGet https://www.nuget.org/packages? q=html+pdf
Я тоже некоторое время назад искал это. Я наткнулся на HTMLDOC http://www.easysw.com/htmldoc/ , бесплатное приложение командной строки с открытым исходным кодом, которое принимает HTML-файл в качестве аргумента и выводит из него PDF-файл. У меня это неплохо сработало для моего побочного проекта, но все зависит от того, что вам действительно нужно.
Компания, которая его производит, продает скомпилированные двоичные файлы, но вы можете бесплатно загрузить и скомпилировать из исходного кода и использовать его бесплатно. Мне удалось скомпилировать довольно недавнюю ревизию (для версии 1.9), и я намерен выпустить для нее двоичный установщик через несколько дней, поэтому, если вам интересно, я могу предоставить ссылку на нее, как только я ее опубликую.
Редактировать (25.02.2014): Похоже, что документы и сайт перемещены на http://www.msweet.org/projects.php?Z1
Попробуйте этот компонент преобразования PDF Duo .Net для преобразования HTML в PDF из приложения ASP.NET без использования дополнительных DLL.
передать строку HTML или файл, или поток для создания PDF. Используйте приведенный ниже код (пример C #):
string file_html = @"K:\hdoc.html";
string file_pdf = @"K:\new.pdf";
try
{
DuoDimension.HtmlToPdf conv = new DuoDimension.HtmlToPdf();
conv.OpenHTML(file_html);
conv.SavePDF(file_pdf);
textBox4.Text = "C# Example: Converting succeeded";
}
Примеры Info + C # / VB вы можете найти по адресу: http://www.duodimension.com/html_pdf_asp.net/component_html_pdf.aspx
Обновление: Теперь я бы рекомендовал PupeteerSharp по wkhtmltopdf.
Try wkhtmtopdf. Это лучший инструмент, который я нашел до сих пор.
Для .NET вы можете использовать эту маленькую библиотеку , чтобы легко вызвать утилиту командной строки wkhtmtopdf.
Другой прием можно использовать управление WebBrowser, ниже является моим полным рабочим кодом
, URL Присвоения к управлению текстовым полем в моем случае
protected void Page_Load(object sender, EventArgs e)
{
txtweburl.Text = "https://www.google.com/";
}
Ниже является кодом для, генерируют экран с помощью потока
protected void btnscreenshot_click(object sender, EventArgs e)
{
// btnscreenshot.Visible = false;
allpanels.Visible = true;
Thread thread = new Thread(GenerateThumbnail);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
private void GenerateThumbnail()
{
// btnscreenshot.Visible = false;
WebBrowser webrowse = new WebBrowser();
webrowse.ScrollBarsEnabled = false;
webrowse.AllowNavigation = true;
string url = txtweburl.Text.Trim();
webrowse.Navigate(url);
webrowse.Width = 1400;
webrowse.Height = 50000;
webrowse.DocumentCompleted += webbrowse_DocumentCompleted;
while (webrowse.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
}
В ниже кода, я сохранил файл PDF после загрузки
private void webbrowse_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// btnscreenshot.Visible = false;
string folderPath = Server.MapPath("~/ImageFiles/");
WebBrowser webrowse = sender as WebBrowser;
//Bitmap bitmap = new Bitmap(webrowse.Width, webrowse.Height);
Bitmap bitmap = new Bitmap(webrowse.Width, webrowse.Height, PixelFormat.Format16bppRgb565);
webrowse.DrawToBitmap(bitmap, webrowse.Bounds);
string Systemimagedownloadpath = System.Configuration.ConfigurationManager.AppSettings["Systemimagedownloadpath"].ToString();
string fullOutputPath = Systemimagedownloadpath + Request.QueryString["VisitedId"].ToString() + ".png";
MemoryStream stream = new MemoryStream();
bitmap.Save(fullOutputPath, System.Drawing.Imaging.ImageFormat.Jpeg);
//generating pdf code
Document pdfDoc = new Document(new iTextSharp.text.Rectangle(1100f, 20000.25f));
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(fullOutputPath);
img.ScaleAbsoluteHeight(20000);
img.ScaleAbsoluteWidth(1024);
pdfDoc.Add(img);
pdfDoc.Close();
//Download the PDF file.
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=ImageExport.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}
, можно также отослать мое самое старое сообщение для получения дополнительной информации: Навигация к веб-странице была отменена, получив сообщение в веб-форме
asp.netДля преобразования HTML в PDF на C # используйте ABCpdf .
ABCpdf может использовать механизмы рендеринга Gecko или Trident, поэтому ваша HTML-таблица будет выглядеть так же, как в FireFox и Internet Explorer.
На сайте www.abcpdfeditor.com есть онлайн-демонстрация ABCpdf. Вы можете использовать это, чтобы сначала проверить, как будут отображаться ваши таблицы, без необходимости загружать и устанавливать программное обеспечение.
Для визуализации целых веб-страниц вам потребуются функции AddImageUrl или AddImageHtml. Но если все, что вам нужно, это просто добавить текст в стиле HTML, вы можете попробовать функцию AddHtml, как показано ниже:
Doc theDoc = new Doc();
theDoc.FontSize = 72;
theDoc.AddHtml("<b>Some HTML styled text</b>");
theDoc.Save(Server.MapPath("docaddhtml.pdf"));
theDoc.Clear();
ABCpdf - коммерческое название программного обеспечения, однако стандартную версию часто можно получить бесплатно по специальному предложению.