Advertisement
Guest User

Untitled

a guest
May 24th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.44 KB | None | 0 0
  1. procedure ExportRichEditFRToPDF(RichEdit: TRxRichEdit; sFileName: String = '');
  2. // inc Felipe Augusto 15/04/19 - Para passar o conteúdo do RxRichEdit para o FastReport e exportar em PDF sem necessidade do PDFCreator instalado. Atend: 01787347.
  3. var
  4.   frxReport: TfrxReport;
  5.   frxRichView: TfrxRichView;
  6.   frxPage: TfrxReportPage;
  7.   frxPDFExport: TfrxPDFExport;
  8.   frxReportSummary: TfrxReportSummary;
  9.   SaveDialog: TSaveDialog;
  10.   oMSRich: TMemoryStream;
  11. begin
  12.   SaveDialog := TSaveDialog.Create(nil);
  13.   try
  14.     SaveDialog.DefaultExt := '.pdf';
  15.     SaveDialog.Filter := 'Arquivo PDF (*.pdf)|*.pdf';
  16.     SaveDialog.Options := [ofOverwritePrompt, ofReadOnly, ofEnableSizing];
  17.  
  18.     if (sFileName <> EmptyStr) or SaveDialog.Execute then begin
  19.       frxReport        := TfrxReport.Create(RichEdit.Owner);
  20.       frxPage          := TfrxReportPage.Create(frxReport);
  21.       frxReportSummary := TfrxReportSummary.Create(frxReport);
  22.       frxRichView      := TfrxRichView.Create(frxReport);
  23.       frxPDFExport     := TfrxPDFExport.Create(RichEdit.Owner);
  24.       oMSRich          := TMemoryStream.Create;
  25.  
  26.       RichEdit.Lines.SaveToStream(oMSRich);
  27.       oMSRich.Position := 0;
  28.  
  29.       try
  30.         // Configura o relatório
  31.         frxPage.TopMargin          := 0;
  32.         frxPage.BottomMargin       := 0;
  33.         frxPage.LeftMargin         := 0;
  34.         frxPage.RightMargin        := 0;
  35.         frxPage.Parent             := frxReport;
  36.         frxReportSummary.Parent    := frxPage;
  37.         frxRichView.Parent         := frxReportSummary;
  38.         frxReportSummary.Stretched := True;
  39.         frxRichView.StretchMode    := smMaxHeight;
  40.         frxReportSummary.Height    := frxPage.Height;
  41.         frxRichView.Align          := baClient;
  42.  
  43.         frxRichView.RichEdit.Lines.LoadFromStream(oMSRich); // Carrega o rtf para o relatório
  44.  
  45.         if (sFileName = EmptyStr) then
  46.           sFileName := SaveDialog.FileName;
  47.  
  48.         frxReport.PrintOptions.ShowDialog := False;
  49.         frxPDFExport.ShowDialog           := False;
  50.         frxPDFExport.FileName             := sFileName;
  51.         frxPDFExport.PrintOptimized       := True;
  52.         frxPDFExport.Quality              := 100;
  53.         frxReport.PrepareReport; // Prepara o relatório
  54.         frxReport.Export(frxPDFExport);
  55.       finally
  56.         FreeAndNil(frxPDFExport);
  57.         FreeAndNil(frxReport);
  58.         FreeAndNil(oMSRich);
  59.       end;
  60.     end;
  61.   finally
  62.     FreeAndNil(SaveDialog);
  63.   end;
  64. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement