Wie generiere ich am besten ein PDF in eine MVC Applikation. Diese Frage haben wir uns gestellt und wir haben 3 kostenlose und 2 kostenpflichtige Tools getestet.

Die kostenlosen Tools

Rotativa

Dieses Tool ist ein .net Wrapper für wkhtmltopdf. Man kann eine beliebige View, mit wenig Aufwand, als PDF zurückgeben.

public ActionResult PrintInvoice(int invoiceId)
{
  return new ActionAsPdf(
                 "Invoice", 
                 new { invoiceId= invoiceId }) 
                 { FileName = "Invoice.pdf" };
}Man kann der View auch ein Model übergeben. Zu empfehlen ist Rotativa in den Fällen in denen man ein einfaches PDF mit wenig Anforderungen, z.B: verschiedene Page Orientations & automatisches Inhaltsverzeichnis, bauen will.

„wkhtmltopdf“ ist eine .exe und kann somit auf Azure, z.B., nicht ausgeführt werden.

RazorPDF

RazorPDF hat die selbe Funktionsweise und die selben Nachteile wie unser voriges Tool. Beide Tools sind auch als Nuget Packages vorhanden.

Mit RazorPdf lässt sich ein File auch ganz einfach herstellen:

public ActionResult PDF()
{
   return new RazorPDF.PdfResultmodel, "PDF");
}RazorPdf verwendet für die Umwandlung von HTML zu PDF die iTextSharp Bibliothek.

iTextSharp

Mit iTextSharp selbst muss man, im Gegensatz zu den vorigen Tools, ein PDF selbst zusammenbauen.

FileStream fs = new FileStream("Chapter1_Example1.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, fs);
doc.Open();
doc.Add(new Paragraph("Hello World"));
doc.NewPage();
doc.Add(new Paragraph("This is a page"));
doc.Close();iTextSharp ist ein nettes, kostenloses Tool, doch das Problem ist bei der Lizense. Seit der neuesten Version, darf man mit iTextSharp erstellte DLL’s oder EXE’s nur mit AGPL Lizenz weitergeben, falls man die kostenfreie Version des Tools nutzt.

Die kostenpflichtigen Tools

Foxit

Bei diesem SDK muss man ebenfalls ein Dokument erstellen und Seiten hinzufügen. Foxit ist ein ziemlich mächtiges Tool mit nahezu uneingeschränkten Möglichkeiten.

Es hat jedoch 2 wesentliche Nachteile:

  • Es lässt sich, weder automatisch. noch für den Benutzer einfach, ein Inhaltsverzeichnis erstellen.
  • Man muss die Pages mit Elementen bestücken und ist eines zu lang wird es einfach abgeschitten. Automatisch erstellte Seiten gibt es nicht.

Aspose

Aspose kann alles was Foxit kann und mehr. Mit diesem Tool ist es möglich anstatt Pages – Sections zu generieren. diese Sections werden mit Elementen bestückt, welche automatisch untereinander gereiht werden.

Ist die Seite zu kurz? Dann wird eine neue Seite erstellt. Auch ist es mit ganz wenig Aufwand möglich ein, sogar verlinktes, Inhaltsverzeichnis mit Seiten nummern zu generieren.

Summary

Für kleine, unspektakuläre PDF’s reichen die kostenfreien Varianten allemal. Wenn es jedoch mal etwas komplizierter und komplexer werden sollte, ist die Investition in ein bezahltes Tool sicher nicht falsch.

Is‘ doch cool oder?