Einzelnen Beitrag anzeigen

Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Foxit Debenu PDF Library Hintergrund zeichnen?

  Alt 23. Aug 2017, 10:51
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
  Mit Zitat antworten Zitat