Mit iTextSharp kann man wunderbar PDF-Dateien erzeugen, nur leider sind die meisten Anleitungen auf Dateien ausgelegt. In vielen Fällen mag das ok sein, aber wenn die endgültigen Dateien per Mail verschickt, als Download angeboten oder in die Datenbank geschrieben werden sollen, ist dies ein Umweg.

Eine Lösung ist, den MemoryStream zu benutzen. Dieser stellt einen Stream dar, der komplett im Speicher vorgehalten wird. Insofern sollte dies auch nur mit kleineren Dateien gemacht werden und vielleicht nicht gerade mit der 5.000 Seiten Hochglanzbroschüre… Einige Hürden im Gegensatz zum FileStream sind dabei jedoch zu nehmen, daher im Folgenden ein Beispiel für die Zusammenarbeit:

//Dokument erzeugen
Document doc = new Document();

// Stream erzeugen
MemoryStream ms = new MemoryStream();

//PDF Writer initialisieren
PdfWriter writer = PdfWriter.GetInstance(doc, ms);

//WICHTIG: Stream darf am Ende nicht geschlossen werden!
writer.CloseStream = false;

// Evtl. Metadaten hinzufügen…

// Dokument zum Schreiben öffnen
doc.Open();

// Inhalt einfügen…

// Dokument schließen
doc.Close();

// WICHTIG: Stream zurücksetzen
ms.Position=0

// Jetzt kann der Stream weiter verwendet werden…