ITextSharp HTML к PDF?

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

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

tia.

62
задан 7 December 2012 в 14:04

4 ответа

При преобразовании HTML в PDF на стороне сервера HTML, можно использовать Rotativa:

Install-Package Rotativa

Это основано на wkhtmltopdf, но он имеет лучшую поддержку CSS, чем iTextSharp имеет и очень прост интегрироваться с MVC (который главным образом используется), поскольку можно просто возвратить представление как PDF:

public ActionResult GetPdf()
{
    //...
    return new ViewAsPdf(model);// and you are done!
} 
1
ответ дан 31 October 2019 в 13:48

Это имеет способность преобразовать файл HTML в в PDF.

Необходимое пространство имен для преобразований:

using iTextSharp.text;
using iTextSharp.text.pdf;

и для преобразования и файла загрузки:

// Create a byte array that will eventually hold our final PDF
Byte[] bytes;

// Boilerplate iTextSharp setup here

// Create a stream that we can write to, in this case a MemoryStream
using (var ms = new MemoryStream())
{
    // Create an iTextSharp Document which is an abstraction of a PDF but **NOT** a PDF
    using (var doc = new Document())
    {
        // Create a writer that's bound to our PDF abstraction and our stream
        using (var writer = PdfWriter.GetInstance(doc, ms))
        {
            // Open the document for writing
            doc.Open();

            string finalHtml = string.Empty;

            // Read your html by database or file here and store it into finalHtml e.g. a string
            // XMLWorker also reads from a TextReader and not directly from a string
            using (var srHtml = new StringReader(finalHtml))
            {
                // Parse the HTML
                iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml);
            }

            doc.Close();
        }
    }

    // After all of the PDF "stuff" above is done and closed but **before** we
    // close the MemoryStream, grab all of the active bytes from the stream
    bytes = ms.ToArray();
}

// Clear the response
Response.Clear();
MemoryStream mstream = new MemoryStream(bytes);

// Define response content type
Response.ContentType = "application/pdf";

// Give the name of file of pdf and add in to header
Response.AddHeader("content-disposition", "attachment;filename=invoice.pdf");
Response.Buffer = true;
mstream.WriteTo(Response.OutputStream);
Response.End();
3
ответ дан 31 October 2019 в 13:48

Я был бы ответ одного-up'd mightymada, если у меня была репутация - я просто реализовал HTML asp.net к решению PDF с помощью Pechkin. результаты замечательны.

существует пакет самородка для Pechkin, но поскольку вышеупомянутый плакат упоминает в его блоге ( http://codeutil.wordpress.com/2013/09/16/convert-html-to-pdf/ - я надеюсь, что она не возражает против меня повторно отправляющий его), существует утечка памяти, это было зафиксировано в этом ответвлении:

https://github.com/tuespetre/Pechkin

вышеупомянутый блог имеет конкретные инструкции для того, как включать этот пакет (это - 32 бита dll и требует .net4). вот мой код. Входящий HTML на самом деле собран через пакет Гибкости HTML (я автоматизирую поколения счета):

public static byte[] PechkinPdf(string html)
{
  //Transform the HTML into PDF
  var pechkin = Factory.Create(new GlobalConfig());
  var pdf = pechkin.Convert(new ObjectConfig()
                          .SetLoadImages(true).SetZoomFactor(1.5)
                          .SetPrintBackground(true)
                          .SetScreenMediaType(true)
                          .SetCreateExternalLinks(true), html);

  //Return the PDF file
  return pdf;
}

снова, спасибо mightymada - Ваш ответ является фантастическим.

10
ответ дан 31 October 2019 в 13:48

Я предпочитаю пользоваться другой библиотекой по имени Pechkin, потому что она может преобразовать не тривиальный HTML (который также имеет классы CSS). Это возможно, потому что эта библиотека использует механизм расположения WebKit, который также используется браузерами как Chrome и Safari.

я детализировал на моем блоге свой опыт с Pechkin: http://codeutil.wordpress.com/2013/09/16/convert-html-to-pdf/

6
ответ дан 31 October 2019 в 13:48

Другие вопросы по тегам:

Похожие вопросы: