/Components/FastReport3/Source/ExportPack/frxExportPDF.pas
Pascal | 174 lines | 129 code | 27 blank | 18 comment | 9 complexity | 0bac8090e03584a7beaac5e64f2a5779 MD5 | raw file
Possible License(s): AGPL-3.0
- {******************************************}
- { }
- { FastReport v3.0 }
- { PDF export filter }
- { }
- { Copyright (c) 2004 }
- { by Alexander Fediachov, }
- { Fast Reports, Inc. }
- { }
- {******************************************}
- unit frxExportPDF;
- interface
- {$I frx.inc}
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ExtCtrls, ComObj, Printers, frxClass, JPEG, ShellAPI,
- frxExportMatrix, frxExportProgr, ComCtrls, frxPDFFile
- {$IFDEF Delphi6}, Variants {$ENDIF};
- type
- TfrxPDFExportDialog = class(TForm)
- OkB: TButton;
- CancelB: TButton;
- GroupPageRange: TGroupBox;
- DescrL: TLabel;
- AllRB: TRadioButton;
- CurPageRB: TRadioButton;
- PageNumbersRB: TRadioButton;
- PageNumbersE: TEdit;
- GroupQuality: TGroupBox;
- CompressedCB: TCheckBox;
- OpenCB: TCheckBox;
- SaveDialog1: TSaveDialog;
- EmbeddedCB: TCheckBox;
- procedure FormCreate(Sender: TObject);
- end;
- TfrxPDFExport = class(TfrxCustomExportFilter)
- private
- FCompressed: Boolean;
- FEmbedded: Boolean;
- FName: String;
- FOpenAfterExport: Boolean;
- FPDF: TfrxPDFFile;
- FPDFpage: TfrxPDFPage;
- public
- constructor Create(AOwner: TComponent); override;
- class function GetDescription: String; override;
- function ShowModal: TModalResult; override;
- function Start: Boolean; override;
- procedure ExportObject(Obj: TfrxComponent); override;
- procedure Finish; override;
- procedure FinishPage(Page: TfrxReportPage; Index: Integer); override;
- procedure StartPage(Page: TfrxReportPage; Index: Integer); override;
- published
- property Compressed: Boolean read FCompressed write FCompressed default True;
- property EmbeddedFonts: Boolean read FEmbedded write FEmbedded default False;
- property FileName: String read FName write FName;
- property OpenAfterExport: Boolean read FOpenAfterExport
- write FOpenAfterExport default False;
- end;
- implementation
- uses frxUtils, frxRes, frxrcExports;
- {$R *.dfm}
- { TfrxPDFExport }
- constructor TfrxPDFExport.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- FCompressed := True;
- end;
- class function TfrxPDFExport.GetDescription: String;
- begin
- Result := frxResources.Get('PDFexport');
- end;
- function TfrxPDFExport.ShowModal: TModalResult;
- begin
- with TfrxPDFExportDialog.Create(nil) do
- begin
- OpenCB.Checked := FOpenAfterExport;
- CompressedCB.Checked := FCompressed;
- EmbeddedCB.Checked := FEmbedded;
- Result := ShowModal;
- if Result = mrOk then
- begin
- PageNumbers := '';
- CurPage := False;
- if CurPageRB.Checked then
- CurPage := True
- else if PageNumbersRB.Checked then
- PageNumbers := PageNumbersE.Text;
- FOpenAfterExport := OpenCB.Checked;
- FCompressed := CompressedCB.Checked;
- FEmbedded := EmbeddedCB.Checked;
- if SaveDialog1.Execute then
- FName := SaveDialog1.FileName
- else
- Result := mrCancel;
- end;
- Free;
- end;
- end;
- function TfrxPDFExport.Start: Boolean;
- begin
- if FName <> '' then
- begin
- FPDF := TfrxPDFFile.Create;
- {$IFNDEF BCB}
- FPDF.Compressed := FCompressed;
- {$ELSE}
- FPDF.Compressed := False;
- {$ENDIF}
- FPDF.EmbeddedFonts := FEmbedded;
- Result := True
- end
- else
- Result := False;
- end;
- procedure TfrxPDFExport.StartPage(Page: TfrxReportPage; Index: Integer);
- begin
- FPDFPage := FPDF.AddPage(Page);
- end;
- procedure TfrxPDFExport.ExportObject(Obj: TfrxComponent);
- begin
- if Obj is TfrxView then
- if TfrxView(Obj).Name <> '' then
- FPDFPage.AddObject(TfrxView(Obj));
- end;
- procedure TfrxPDFExport.FinishPage(Page: TfrxReportPage; Index: Integer);
- begin
- //
- end;
- procedure TfrxPDFExport.Finish;
- var
- Stream: TFileStream;
- begin
- Stream := TFileStream.Create(FName, fmCreate);
- FPDF.Title := Report.ReportOptions.Name;
- FPDF.SaveToStream(Stream);
- Stream.Free;
- FPDF.Free;
- if FOpenAfterExport then
- ShellExecute(GetDesktopWindow, 'open', PChar(FName), nil, nil, SW_SHOW);
- end;
- { TfrxPDFExportDialog }
- procedure TfrxPDFExportDialog.FormCreate(Sender: TObject);
- begin
- frxResources.LocalizeForm(Self);
- end;
- end.