Einzelnen Beitrag anzeigen

madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#4

AW: PDF zur Laufzeit erstellen mit PowerPDF

  Alt 23. Feb 2017, 22:01
Ich möchte gerne verschiedene Images als mehrseitiges PDF-Dokument mit PowerPDF speichern, bekomme aber immer nur eine leere Seite ins PDF:

Hier mal mein Code bisher:
Delphi-Quellcode:
procedure TPdfExport.Execute;
var
  Pr: TPReport;
  PPage: TPRPage;
  PLayoutPanel: TPRLayoutPanel;
  PJpegImage: TPRJpegImage;
  bmp: TBitmap;
  jpg: TJPEGImage;
  I: Integer;
begin
  Pr:=TPReport.Create(nil);
  try
    Pr.FileName:=Fofile;
    Pr.BeginDoc;
    for I := 0 to FPictureList.count-1 do
    begin
      bmp:=TBitmap.Create;
      jpg:=TJPEGImage.Create;
      bmp.loadfromfile(FPictureList[i].filename);
      jpg.Assign(bmp);
      PPage:=TPRPage.Create(nil);
      PPage.Width:=1680;
      PPage.Height:=2376;
      PLayoutPanel:=TPRLayoutPanel.Create(PPage);
      PLayoutPanel.Left:=0;
      PLayoutPanel.Top:=0;
      PLayoutPanel.Width:=PPage.Width;
      PLayoutPanel.Height:=PPage.Height;
      PJpegImage:=TPRJpegImage.Create(PLayoutPanel);
      PJpegImage.Left:=0;
      PJpegImage.Top:=0;
      PJpegImage.Width:=PLayoutPanel.Width;
      PJpegImage.Height:=PLayoutPanel.Height;
      PJpegImage.Stretch:=True;
      PJpegImage.Picture.Bitmap.Assign(jpg);
      pr.Print(PPage);
      PJpegImage.Free;
      PLayoutPanel.Free;
      PPage.Free;
      jpg.Free;
      bmp.Free;
    end;
    Pr.EndDoc;
  finally
    Pr.Free;
    sffConv.Free;
  end;
end;
Sieht ein bischen wirr aus, aber es geht mir grundsätzlich erstmal darum, dass irgendwie funktioniert. Schön machen kann ich dann immer noch.
Wie gesagt, das ausgegebene PDF hat eine leere Seite ohne Inhalt. Das BMP und JPG-Object enthält das Bild korrekt, das habe ich vorher geprüft. Ich habe das auch schon mit TPRImage probiert, das gleiche Ergebnis. Das läßt mich vermuten, dass ich vielleicht irgendwas nicht richtig zuordne. Ist das mit meine Create's so korrekt?

Gruß Hobbycoder
Vielleicht das ganze Free-Gedöns mal nach dem EndDoc ansiedeln. Ist aber nur ein Schuss ins Blaue.

madas
  Mit Zitat antworten Zitat