RAVE Report - Nevrona (tm)

Top  Previous  Next

Tested with RAVE 5 which is included in Delphi7 Professional.

 

Although RAVE comes with a PDF export filter you might prefer wPDF because

it supports security (40, 128 bit)
embedded metafiles are exported as vector drawing
you can add custom drawing in the various events of wPDF

 

Used with a complex test page the export quality is pretty impressive, but please see yourself:

 

  clip0004_rave

 

The code for the rave renderer is in unit wppdfRAVE. If you add this to the (wPDF) package the component TRvRenderWPDF will be installed. But you can of course also create it in code.

 

To use this filter place it on your form (or create it using code) and assign the property PDFPrinter to an instance of a TWPDFPrinter component. Once you set the 'Active' property to true you can select the file format created by this renderer when you save a report from preview

 

In contrast to the default PDF renderer included in PDF this enhanced product will export metafiles as vectors, not as bitmaps. This will create smaller files if the metafiles are big and result in better preview and print quality.  You can also use the enhanced security options of wPDF

 

 

Example: Create renderer in code:

 

uses wppdfRAVE;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

 RvRenderWPDF1 := TRvRenderWPDF.Create(Self);

 RvRenderWPDF1.PDFPrinter := WPPDFPrinter1;

 RvRenderWPDF1.Active := TRUE;

end;

 

Tip: If you want to combine the output of different reports in one PDF file you can execute WPPDFPrinter1.BeginDoc at the start of the loop and WPPDFPrinter1.EndDoc when everything has been exported. (But please don't forget to execute EndDoc!)

 

Example 1:

Render a NDR file directly to PDF, This example uses an open dialog to let you choose the file:

 

uses  RpDefine, RpRender, RpRenderCanvas, RpRenderPreview, wppdfRave, WPPDFR1, WPPDFR2;

 

procedure TForm1.RenderNDRClick(Sender: TObject);

var

 OpenDialog: TOpenDialog;

 RvRenderWPDF: TRvRenderWPDF;

 WPPDFPrinter: TWPPDFPrinter;

 FileStream: TFileStream;

 output: string;

begin

 OpenDialog := TOpenDialog.Create(Self);

 RvRenderWPDF := TRvRenderWPDF.Create(Self);

 WPPDFPrinter := TWPPDFPrinter.Create(Self);

try

   OpenDialog.Filter := 'NDF Files|*.NDR';

   RvRenderWPDF.PDFPrinter := WPPDFPrinter;

   RvRenderWPDF.Active := TRUE;

   WPPDFPrinter.AutoLaunch := TRUE;

   WPPDFPrinter.CompressStreamMethod := wpCompressFastFlate;

  if OpenDialog.Execute then

  begin

     output := ChangeFileExt(OpenDialog.FileName, '.PDF');

     FileStream := TFileStream.Create(OpenDialog.FileName, fmOpenRead);

    try

      RvRenderWPDF.PrintRender(FileStream, output);

    finally

       FileStream.Free;

    end;

  end;

finally

   OpenDialog.Free;

   RvRenderWPDF.Free;

   WPPDFPrinter.Free;

end;

end;

 

 

Example 2:

Render multiple NDR files directly to the PDF file 'c:\rave.pdf'. It uses an open dialog to let you choose the files.

 

procedure TForm1.Button1Click(Sender: TObject);

var

 OpenDialog: TOpenDialog;

 RvRenderWPDF: TRvRenderWPDF;

 WPPDFPrinter: TWPPDFPrinter;

 FileStream: TFileStream;

 output: string;

 i: Integer;

begin

 OpenDialog := TOpenDialog.Create(Self);

OpenDialog.Options := [ofAllowMultiSelect];

 RvRenderWPDF := TRvRenderWPDF.Create(Self);

 WPPDFPrinter := TWPPDFPrinter.Create(Self);

try

   OpenDialog.Filter := 'NDF Files|*.NDR';

   RvRenderWPDF.PDFPrinter := WPPDFPrinter;

   RvRenderWPDF.Active := TRUE;

   WPPDFPrinter.AutoLaunch := TRUE;

   WPPDFPrinter.CompressStreamMethod := wpCompressFastFlate;

  if OpenDialog.Execute then

  begin

    output := 'dummy';

     WPPDFPrinter.Filename := 'c:\rave.pdf';

     WPPDFPrinter.BeginDoc;

    try

      for i := 0 to OpenDialog.Files.Count - 1 do

      begin

         FileStream := TFileStream.Create(OpenDialog.Files[i], fmOpenRead);

        try

           RvRenderWPDF.PrintRender(FileStream, output);

        finally

           FileStream.Free;

        end;

      end;

    finally

       WPPDFPrinter.EndDoc;

    end;

  end;

finally

   OpenDialog.Free;

   RvRenderWPDF.Free;

   WPPDFPrinter.Free;

end;

end;

 

TIP: Use Mail Merge to create the page numbers.