Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#1

Druckt PowerPDF Komponente fehlerhaft?

  Alt 26. Mär 2012, 09:16
Hallo,

ich befasse mich seit einigen Tagen mit verschiedenen Möglichkeiten, aus Delphi heraus PDF-Dateien zu erzeugen, ohne einen PDF-Drucker einzusetzen. Dabei bin ich auf die Komponente PowerPDF gestoßen, die mir für mein Vorhaben passend schien.

In meinem Testprogramm verwende ich eine ListBox zum Sammeln einiger JPG-Dateien, mit denen die PDF-Datei erzeugt werden soll (siehe Bild im Anhang). In einer Scrollbox rechts im Formular befindet sich eine TPRPage, darauf ein PRLayoutPanel und auf diesem wiederum ein TPRJpegImage und unten (nicht sichtbar) ein TPRText. Wenn ich nun zum PDF-Drucken meine Listbox-Items durchgehe und einmal das dort angegebene JPG in die TPRJpegImage-Komponente lade, des weiteren den String aus der Listbox in die Komponente TPRText, entsteht ein PDF mit der richtigen Seitenanzahl, aber mit immer demselben ersten JPG-Bild. Der Text unten wiederum enthält den gewünschten String. Steht das Property SharedImage der Komponente TPRJpegImage auf FALSE, bleiben die Seiten im PDF außer der ersten ganz leer ...

Meine PDF-Druck-Methode sieht so aus:
Delphi-Quellcode:
// PDF erstellen
procedure TFormMain.Button2Click(Sender: TObject);
VAR
   i : Integer;
begin
     IF ListBox1.Count = 0 THEN EXIT;

     PReport1.BeginDoc;

     FOR i := 0 TO ListBox1.Count -1 DO
     BEGIN
          PRJpegImage1.Picture.LoadFromFile(ListBox1.Items[i]); // JPG einlesen
          PRJpegImage1.Repaint; // auffrischen
          PRText1.Text := ListBox1.Items[i]; // String einlesen
          PRText1.Repaint; // auffrischen

          PReport1.Print(PRPage1); // Seite in Report erstellen
     END;

     PReport1.EndDoc;

     IF Dialogs.MessageDlg('Erzeugte PDF-Datei mit Adobe Reader anschauen?',
                           mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrYes THEN

     ShellExecute(Handle, nil, PWideChar(PReport1.FileName), nil, nil, SW_SHOW);
end;
Seltsam dabei ist, daß die verschiedenen JPG-Dateien durchaus in die Komponente TPRJpegImage geladen werden, beim Druckversuch ebenso wie beim Zuweisen via ListBox1Click:

Delphi-Quellcode:
procedure TFormMain.ListBox1Click(Sender: TObject);
begin
     PRJpegImage1.Picture.LoadFromFile(ListBox1.Items[ListBox1.ItemIndex]);
     PRJpegImage1.Repaint;
     PRText1.Text := ListBox1.Items[ListBox1.ItemIndex];
     PRText1.Repaint;
end;
Bestimmt mache ich irgend etwas grundsätzlich falsch ... wenn ich nur wüßte was ...
Das komplette Testprojekt kann man sich runterladen:
http://www.delphiman.de/Test/PowerPDFTest.zip
Miniaturansicht angehängter Grafiken
testprogramm.jpg  
Angehängte Dateien
Dateityp: pdf TestPDF AlleGleich.pdf (60,7 KB, 25x aufgerufen)
Dateityp: pdf TestPDF.pdf (1,33 MB, 23x aufgerufen)
Dateityp: zip PowerPDFTest.zip (4,24 MB, 24x aufgerufen)

Geändert von TBx (30. Mär 2012 um 10:07 Uhr) Grund: Testprojekt angehängt
  Mit Zitat antworten Zitat