Как получить HTML-контент и преобразовать его в PDF с помощью itextsharp? - PullRequest
2 голосов
/ 27 апреля 2009

Кто-нибудь знает, как получить html-контент, преобразовать его в pdf и сохранить в базе данных?

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

Кто-нибудь знает хороший способ сделать это?

Я использую C # 3.0, ASP.NET MVC и LinQToSQL.

Заранее большое спасибо !!

Ответы [ 2 ]

2 голосов
/ 28 апреля 2009

Для HTML в PDF я склонен смотреть на HTMLDoc . Это exe, а не библиотека, так что, возможно, это не совсем то, что вы ищете, но, вероятно, это поможет вам преодолеть все трудности.

Глядя на книгу iText, Лоуги говорит:

«Один из частых вопросов в списке рассылки iText:« Обеспечивает ли iText функциональность HTML2PDF? » Официальный ответ - нет; вам рекомендуется использовать HtmlDoc или ICEBrowser. " Стр. 456.

Затем он показывает пример HTMLParser, но подчеркивает, что дело не в огромной работе по разбору и представлению HTML.

0 голосов
/ 01 марта 2011
 public class Pdf : IPdf
    {
        public FileStreamResult Make(string s)
        {
            using (var ms = new MemoryStream())
            {
                using (var document = new Document())
                {
                    PdfWriter.GetInstance(document, ms);
                    document.Open();
                    using (var str = new StringReader(s))
                    {

                        var htmlWorker = new HTMLWorker(document);

                        htmlWorker.Parse(str);
                    }
                    document.Close();
                }

                HttpContext.Current.Response.ContentType = "application/pdf";
                HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=MyPdfName.pdf");
                HttpContext.Current.Response.Buffer = true;
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
                HttpContext.Current.Response.OutputStream.Flush();
                HttpContext.Current.Response.End();

                return new FileStreamResult(HttpContext.Current.Response.OutputStream, "application/pdf");
            }
        }
    }
...