Die Idee ist folgende:
Ich baue eine Stamper auf, der bekommt eine initiale Pdf-Datei mit, auf die dann (iterativ) diverse weitere Layer drüber gelegt werden. Das Ergebnis wird letztlich dann geschrieben.

Mit Bildlayern (vgl. erste Mail) und Textlayern klappt das auch wunderbar. Nun brauch ich auch noch ein Abbild eines anderen Pdf.

Nun gibt es ja mit iText die Möglichkeit, mehrere Pdf zusammenzufassen, z.B. vgl. Tutorials in This section . (Okay, das ist java, nicht C#, aber die Idee sollte ja übertragbar sein.)

Entsprechend meinem Ansatz vom Freitag hab ich das jetzt ganz analog so umzusetzen versucht:

PdfContentByte cb = Stamper.GetOverContent(page);

PdfReader reader = new PdfReader(picture.FullName);

Document doc = new Document();
MemoryStream stream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(doc, stream);

PdfImportedPage page1 = writer.GetImportedPage(reader, 1); // get the first page of the PDF

cb.AddTemplate(page1, x, y); // provided it was scaled already accordingly

also einfach einen temporären Stream aufgemacht, um damit einen writer zu definieren, nur um irgendwie an die page1 zu kommen. Diese so abgegriffene page1 soll nun in Form eines Template als weitere Ebene dem Stamper hinzugefügt werden.

Leider geht da aber irgendetwas schief. Ich bekomme folgende Fehlermeldung:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei iTextSharp.text.pdf.PdfWriter.get_PdfIndirectRefer ence()
bei iTextSharp.text.pdf.PdfTemplate.get_IndirectRefere nce()
bei iTextSharp.text.pdf.PdfWriter.AddDirectTemplateSim ple(PdfTemplate template, PdfName forcedName)
bei iTextSharp.text.pdf.PdfContentByte.AddTemplate(Pdf Template template, Single a, Single b, Single c, Single d, Single e, Single f)
bei iTextSharp.text.pdf.PdfContentByte.AddTemplate(Pdf Template template, Single x, Single y)

Da ich iTextSharp als dll eingebunden habe, kann ich da leider nicht weiter debuggen. Was geht da schief? Und insb., wie lässt sich das reparieren?