Das mit den ContentStreams haut leider nicht ganz hin, wenn Bilder im Spiel sind. Aber probier mal das aus:
Delphi-Quellcode:
lPDF := TDebenuPDFLibrary.Create;
try
// das HauptPDF laden
lPDF.LoadFromFile('.\1.pdf', '');
nDoc1 := lPDF.SelectedDocument;
// Das 2. PDF, das in das erste eingefügt werdenm soll
lPDF.LoadFromFile('.\2.pdf', '');
nDoc2 := lPDF.SelectedDocument;
// Hauptpedf auswählen
lPDF.SelectDocument(nDoc1);
// und in dieses das 2. PDF mit Merge einbinden (als neue Seiten am Ende des bestehenden PDFs)
lPDF.MergeDocument(nDoc2);
// Dann die letzte Seite erfassen (dabei wird diese aus dem PDF ausgehängt)
nCaptureID := lPDF.CapturePage(lPDF.PageCount);
// die erste Seite aktivieren
lPDF.SelectPage(1);
// Neuen Contentstream erstellen, in den die erfaßte Seite eingefügt werden soll (damit man diese nachher nach unten verschieben kann)
ncID := lPDF.NewContentStream;
// Positionen bzgl. TOP / Left setzen
lPDF.SetOrigin(1);
// Erfasste Seite auf Seite 1 in den neuen Contentstream zeichnen (ich gehe davon aus, daß beide Seiten gleich groß sind)
lPDF.DrawCapturedPage(nCaptureID, 0, 0, lPDF.PageWidth, lPDF.PageHeight);
// diesen nun in den Hintergrund schieben
lPDF.MoveContentStream(ncID, 1);
// That's it.
lPDF.SaveToFile('4.pdf');
finally
lPDF.Free;
end;
Damit geht es bei mir auch mit einem Bild. Bei reinem Text funktioniert aber auch der Code:
Delphi-Quellcode:
lPDF := TDebenuPDFLibrary.Create;
try
lPDF.LoadFromFile('.\5.pdf', '');
lPDF.SelectPage(1);
lPDF.CombineContentStreams;
sData := lPDF.GetContentStreamToString;
finally
lPDF.Free;
end;
lPDF := TDebenuPDFLibrary.Create;
try
lPDF.LoadFromFile('.\1.pdf', '');
lPDF.SelectPage(1);
lPDF.CombineContentStreams;
nNewContentIdx := lPDF.NewContentStream;
lPDF.SelectContentStream(nNewContentIdx);
lPDF.SetContentStreamFromString(sData);
lPDF.MoveContentStream(NNewContentIDX, 1);
lPDF.SaveToFile('3_text.pdf');
finally
lPDF.Free;
end;
HTH,
Uli