Создание pdf из .net mvc view - PullRequest
5 голосов
/ 23 сентября 2010

я использую asp.net mvc2 для моего приложения.У меня есть представление, которое принимает модель и отображает ее данные в каком-то формате.Я хочу, чтобы эта страница была преобразована в файл PDF, чтобы ее можно было отправить через вложение или создать и загрузить на лету.У меня есть некоторый успех в создании PDF с библиотекой itextsharp, но они говорят, что она имеет очень базовую поддержку HTML и CSS.Если кто-то отобразил сложные HTML-страницы в PDF, используя itextsharp или любую другую библиотеку, пожалуйста, помогите мне решить эту проблему.Любые комментарии высоко ценятся

спасибо

Ответы [ 4 ]

3 голосов
/ 23 сентября 2010

Я думаю, что связанный вопрос поможет в определенной степени.Просто обратите внимание, что отображение HTML и документы PDF служат различным целям, как описано здесь .Основная мысль заключается в том, что последний «предназначен для вывода на печать», а другой «предназначен для отображения видео».

Мое предложение заключается в том, что в большинстве случаев, когда один печатает из Интернета, есть опциясоздать отдельную таблицу стилей для печати с использованием этого объявления.Идея состоит в том, чтобы скрыть стилистику и сделать ее более удобной для печати (= менее сложной).

Следующая статья из A List Apart предоставляет некоторые дополнительные сведения об этой опции.

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

Другая бесплатная библиотека PDF для просмотра - PDFSharp .Однако они не поддерживают преобразование из HTML в PDF.

Другие связанные с этим вопросы SO

0 голосов
/ 07 апреля 2011

Захватите визуализированный вид (html) как строку и передайте его Winnovative PDF Creator, который является действительно хорошим инструментом, который сохраняет сложное форматирование.Вот код для создания PDF из захваченного html

    string test="\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\r\n\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" >\r\n<head>\r\n <link rel=\"Stylesheet\" href=\"../../Content/style.css\" type=\"text/css\" />\r\n <title>Cover Page</title>\r\n <style type=\"text/css\">\r\n html, body\r\n {\r\n\t font-family: Arial, Helvetica, sans-serif;\r\n\t font-size: 13pt;\r\n\t padding: 0px;\r\n\t margin: 0px;\r\n\t background-color: #FFFFFF;\r\n\t color: black;\r\n\t width: 680px;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n <div>\r\n Ssotest Ssotest, \r\n </div> \r\n</body>\r\n</html>\r\n"

               FileStreamResponseContext response = new FileStreamResponseContext();
Response .clear();
     Document doc = new Document();
                doc.DocumentInformation.CreationDate = DateTime.Now;
                doc.DocumentInformation.Title = "Test Plan";
                doc.DocumentInformation.Subject = "Test Plan";
                doc.CompressionLevel = CompressionLevel.NormalCompression;
                doc.Margins = new Margins(0, 0, 0, 0);
                doc.Security.CanPrint = true;
                doc.ViewerPreferences.HideToolbar = false;
                doc.ViewerPreferences.FitWindow = false;

    string baseUrl = String.Format("http://localhost{0}/", Request.Url.Port == 80?"":":" + Request.Url.Port.ToString());

    PdfPage docTestPlan = doc.AddPage(PageSize.Letter, new Margins(0, 0, 0, 0), PageOrientation.Portrait);
    // passing the string test returned from the string writer

       HtmlToPdfElement htmlToPdf = new HtmlToPdfElement(test, baseUrl);
                htmlToPdf.FitWidth = false;
                docTestPlan.AddElement(htmlToPdf);


                /******************************************
                 * put doc in a memory stream for return */
                response.FileDataStream = new MemoryStream();
                doc.Save(response.FileDataStream);
                doc.Close();
                response.FileDataStream.Position = 0;

                return new FileStreamResult(response.FileDataStream, "application/pdf");



If you need to capture the controller action follow my post here.[http://stackoverflow.com/questions/5553674/capturing-html-to-string-in-mvc2-0][1]

Образцы кодов вы можете получить на официальном сайте Winnovative PDF creator.

0 голосов
/ 23 сентября 2010

Вы также можете использовать http://itextpdf.com/, который предлагает преобразование html в pdf.

" iText может конвертировать XML или файл HTML в PDF, но только на очень простомУровень. Преобразование документов из одного формата в другой выходит за рамки iText. И нет: iText не преобразует документы Word в PDF!"

0 голосов
/ 23 сентября 2010

Хотя это и не бесплатно, вы можете посмотреть на PDF Conversion Services. Последняя бета-версия поддерживает преобразование HTML с большой точностью.

Посмотрите на этот пост , он хорошо работает в средах на основе .net и java.

Я работал над этим продуктом, поэтому применяются обычные условия отказа от ответственности. С удовольствием отвечу на любые вопросы.

...