Skip to content

antoniojmsjr/FastReportPrinter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maintained YES Memory Leak Verified YES Release Stars Forks Issues
Compatibility Delphi Supported Versions FastReport Supported Versions

FastReportPrinter

FastReportPrinter é uma biblioteca de impressão de relatórios com Fast Report para ambientes multithreading e não GUI(Graphical User Interface).

Implementado na linguagem Delphi, utiliza o conceito de fluent interface para guiar no uso da biblioteca, desenvolvido para impressão de relatórios em ambientes não GUI(Graphical User Interface) usando spooler de impressão.

Ambientes

  • Windows Forms
  • Windows Console
  • Windows Service *
  • IIS ISAPI(Horse) *
  • IIS CGI(Horse) *

⭕ Pré-requisito

Para utilizar o FastReportPrinter é necessário a instalação do componente Fast Report.

⚙️ Instalação Automatizada

Utilizando o Boss (Dependency manager for Delphi) é possível instalar a biblioteca de forma automática.

boss install github.com/antoniojmsjr/FastReportPrinter

⚙️ Instalação Manual

Se você optar por instalar manualmente, basta adicionar as seguintes pastas ao seu projeto, em Project > Options > Delphi Compiler > Target > All Configurations > Search path

..\FastReportPrinter\Source

🧬 DataSet de Exportação

DataSets é uma interface utilizada pela biblioteca para comunicação com o banco de dados através dos componentes:

Classe Componente
TDataSet Nativo
TfrxDBDataset Fast Report

⚡️ Uso da biblioteca

Para exemplificar o uso do biblioteca foi utilizado os dados da API de localidades do IBGE para geração e impressão do relatório.

Arquivo de exemplo de impressão: LocalidadesIBGE.pdf

Os exemplos estão disponíveis na pasta do projeto:

..\FastReportPrinter\Samples

Banco de dados de exemplo

..\FastReportPrinter\Samples\DB

Relatório de exemplo

..\FastReportPrinter\Samples\Report

Exemplo

uses FRPrinter, FRPrinter.Types;
var
  lPrinted: Boolean;
begin

  //CLASSE DE IMPRESSÃO
  try
    lPrinted := TFRPrinter.New.
      DataSets.
        SetDataSet(qryEstadosBrasil, 'EstadosBrasil').
        SetDataSet(frxdbMunicipioEstado).
        SetDataSet(frxdbMunicipioRegiao).
        SetDataSet(qryEstadoRegiao, 'EstadoRegiao').
        SetDataSet(qryMunicipios, 'Municipios').
      &End.
      Print.
        SetPrinter('Microsoft Print to PDF'). //QUANDO NÃO INFORMADO UTILIZA A IMPRESSORA CONFIGURADA NO RELATÓRIO *.fr3
        SetFileReport(TUtils.PathAppFileReport). //LOCAL DO RELATÓRIO *.fr3
        Report(procedure(pfrxReport: TfrxReport) //CONFIGURAÇÃO DO COMPONENTE DE RELATÓRIO DO FAST REPORT
        var
          lfrxComponent: TfrxComponent;
          lfrxMemoView: TfrxMemoView absolute lfrxComponent;
        begin
          //CONFIGURAÇÃO DO COMPONENTE

          pfrxReport.ReportOptions.Name := 'API de localidades IBGE'; //NOME PARA IDENTIFICAÇÃO NA IMPRESSÃO DO RELATÓRIO
          pfrxReport.ReportOptions.Author := 'Antônio José Medeiros Schneider';

          //PASSAGEM DE PARÂMETRO PARA O RELATÓRIO
          lfrxComponent := pfrxReport.FindObject('mmoProcess');
          if Assigned(lfrxComponent) then
          begin
            lfrxMemoView.Memo.Clear;
            lfrxMemoView.Memo.Text := Format('Aplicativo de Exemplo: %s', ['VCL']);
          end;
        end).
        Execute; //PROCESSAMENTO DO RELATÓRIO/IMPRESSÃO
  except
    on E: Exception do
    begin
      if E is EFRPrinter then
        ShowMessage('Erro de impressão: ' + E.ToString)
      else
        ShowMessage('Erro de impressão: ' + E.Message);
      Exit;
    end;
  end;

  if lPrinted then
    ShowMessage('Impresso')
  else
    ShowMessage('Falha de impressão');

end;

Observação

  • Falta de memória pode gerar falha de impressão.
  • Impressão de documento grande pode ter demora na resposta de sucesso da impressão.
  • Windows Service Application é necessário configurar "logon" usando uma conta administrativa ou NT AUTHORITY\LocalService e ou NT AUTHORITY\NetworkService para uma impressão com sucesso.
  • IIS(ISAPI/CGI) devido a um bug quando app 32 bits e Windows 64 bits não é possível imprimir, solução, compilar app 64 bits e com permissão usando uma conta NT AUTHORITY\LocalService e ou NT AUTHORITY\NetworkService.

Exemplo compilado

Download: Demo.zip

FastReportPrinter-VCL.mp4
FastReportPrinter-IIS.mp4

Teste de desempenho para aplicações web usando JMeter:

..\FastReportPrinter\Samples\JMeter

⚠️ Licença

FastReportPrinter is free and open-source software licensed under the License

About

Biblioteca de impressão de relatórios utilizando Fast Report em ambientes multithreading e não GUI(Graphical User Interface) usando spooler de impressão.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages