Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aus Rave ein PDF File erzeugen ohne Report zu speichern (https://www.delphipraxis.net/126729-aus-rave-ein-pdf-file-erzeugen-ohne-report-zu-speichern.html)

little_budda 1. Jan 2009 10:14


Aus Rave ein PDF File erzeugen ohne Report zu speichern
 
Hallo,

ich möchte gerne einen Rave-Report im Hintergrund (nicht sichtbar) füllen, als PDF-File ablegen und dem Anwender dann nur das PDF-File anbieten.
Ich habe HIER schon einmal versucht den Weg über ein temporäres NDR-File zu gehen, klappt aber auch nicht.

Ich habe "unter Google" den Tipp gefunden ich sollte direkt über den Stream gehen.
Die Fehlermeldung ist aber dieselbe wie in dem oben genannten Thread.
Exception der Klasse EReport Printer "Unexpected Header Code [82] found in Report File"

Hier mein Code:
Delphi-Quellcode:
procedure Tfrm_main.Button2Click(Sender: TObject);
var NDRStream: TMemoryStream;
    sPdfFileName : string;
    bCreatePdfFile : boolean;
begin
  sPdfFileName := sLokalerAnwendungsSystemPfad + 'willi.pdf';

  // Steam erzeugen
  NDRStream := TMemoryStream.Create;
  // Report öffnen
  RvProject1.Open;

  // Text zuweisen
  ...
  // Grafik zuweisen
  ...

  // Report als Stream speichern
  rvproject1.SaveToStream(NDRStream);

  // Als PDF-File speichern
  NDRStream.Position := 0;
  bCreatePdfFile := true;
  try
    try
      RvRenderPDF1.PrintRender(NDRStream, sPdfFileName);
    except
      bCreatePdfFile := false;
    end;
  finally
    NDRStream.Free;
  end;

  if (bCreatePdfFile = true) then
    begin
      ShowMessage('Der Report wurde erstellt.');
      ShellExecute(Handle, 'open', pchar(sPdfFileName), '', nil, SW_SHOW)
    end
  else ShowMessage('Der Report konnte nicht erstellt werden.');
end;
Als Vorschau kann ich den Report problemlos aufrufen und von dort aus auch "von Hand" als PDF speichern.
Also kann mein Report doch nicht die Ursache sein?

Vielleicht hat ja jemand eine Idee für mich.

:gruebel:

Gruß Holger.

little_budda 6. Jan 2009 11:33

Re: Aus Rave ein PDF File erzeugen ohne Report zu speichern
 
Hallo,
ich habe in einem anderen Thread eine Lösung bekommen.
So klappt es.

Delphi-Quellcode:
var
  MeinBitmap: TRaveBitmap;
  MeineSeite: TRavePage;
  sPdfFileName : string;
begin
  // Zieldateiname festlegen
  sPdfFileName := sLokalerAnwendungsSystemPfad + 'willi.pdf';
  // Report öffnen
  RvProject1.Open;
  // Text zuweisen
  RvProject1.SetParam('Label_001', 'Hallo Welt');
  // Grafik zuweisen
  with RvProject1.ProjMan do
    begin
      MeineSeite := FindRaveComponent('Report1.Page1', nil) as TRavePage;
      MeinBitmap := FindRaveComponent('Bitmap1', MeineSeite) as TRaveBitmap;
      MeinBitmap.Image.Assign(imgBarCode.Picture.Bitmap);
    end;
  // Ausgabe vorbereiten
  RvSystem1.DefaultDest := rdFile;
  RvSystem1.DoNativeOutput := false;
  RvSystem1.RenderObject := RvRenderPDF1;
  RvSystem1.OutputFileName := sPdfFileName;
  RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
  // PDF anlegen
  RvProject1.ExecuteReport('Report1');
  // Wenn vorhanden anzeugen oder Fehlemeldung
  if (fileexists(sPdfFileName) = true) then
    begin
      // Aufrufen des erzeugten Reportes
      ShellExecute(Handle, 'open', pchar(sPdfFileName), '', nil, SW_SHOW);
    end
  else
    begin
      // negative Abschlußmeldung
      ShowMessage('Der Report konnte nicht erstellt werden.');
    end;
:thumb:

WS1976 6. Jan 2009 12:53

Re: Aus Rave ein PDF File erzeugen ohne Report zu speichern
 
Hallo,

woher hast du denn TRaveBitmap, Travepage?
in meiner RAD Studio 2007 sind die entsprechenden Komponenten nicht vorhanden.

Grüsse
Rainer

juergen 6. Jan 2009 18:03

Re: Aus Rave ein PDF File erzeugen ohne Report zu speichern
 
@WS1976,

hast du auch RvClass, RvCSStd unter Uses stehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz