AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

PDF zur Laufzeit erstellen mit PowerPDF

Ein Thema von Hobbycoder · begonnen am 23. Feb 2017 · letzter Beitrag vom 24. Feb 2017
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
928 Beiträge
 
#1

PDF zur Laufzeit erstellen mit PowerPDF

  Alt 23. Feb 2017, 14:09
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
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: PDF zur Laufzeit erstellen mit PowerPDF

  Alt 23. Feb 2017, 18:09
Wenn ich dir was raten darf? Nimm SynPdf.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: PDF zur Laufzeit erstellen mit PowerPDF

  Alt 23. Feb 2017, 18:22
Wenn ich dir was raten darf? Nimm SynPdf.
Und damit es einfacher ist:

https://github.com/synopse/SynPDF
Fritz Westermann
  Mit Zitat antworten Zitat
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
Hobbycoder

Registriert seit: 22. Feb 2017
928 Beiträge
 
#5

AW: PDF zur Laufzeit erstellen mit PowerPDF

  Alt 24. Feb 2017, 07:59
Hab jetzt mal Synpdf genommen. Very nice
Allerdings, finde ich, mangelt es an Dokumentation, die ich auf die schnelle nicht gefunden habe. Einzig die verstreuten Code-Schnipsel in den verschiedenen Foren haben in erstaunlich kurzer Zeit ans Ziel gebracht und mir eine passiges PDF-Dokument erzeugt

Gruß Hebbycoder
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: PDF zur Laufzeit erstellen mit PowerPDF

  Alt 24. Feb 2017, 09:15
Hab jetzt mal Synpdf genommen. Very nice
Allerdings, finde ich, mangelt es an Dokumentation, die ich auf die schnelle nicht gefunden habe. Einzig die verstreuten Code-Schnipsel in den verschiedenen Foren haben in erstaunlich kurzer Zeit ans Ziel gebracht und mir eine passiges PDF-Dokument erzeugt

Gruß Hebbycoder
https://synopse.info/fossil/wiki?name=PDF+Engine

hier der link zur Dokumentation
Fritz Westermann
  Mit Zitat antworten Zitat
Raible

Registriert seit: 12. Mär 2012
30 Beiträge
 
#7

AW: PDF zur Laufzeit erstellen mit PowerPDF

  Alt 24. Feb 2017, 17:27
ich verwende zwar PowerPDF nicht, aber prüfe mal das Koordinatensystem. Möglicherweise befindet sich der Nullpunkt unten. In diesem Fall sollte statt PJpegImage.Top:=0; PJpegImage.Top:=Height; funktionieren.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz