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
Para utilizar o FastReportPrinter é necessário a instalação do componente Fast Report.
Utilizando o Boss (Dependency manager for Delphi) é possível instalar a biblioteca de forma automática.
boss install github.com/antoniojmsjr/FastReportPrinter
Se você optar por instalar manualmente, basta adicionar as seguintes pastas ao seu projeto, em Project > Options > Delphi Compiler > Target > All Configurations > Search path
..FastReportPrinterSource
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 |
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:
..FastReportPrinterSamples
Banco de dados de exemplo
..FastReportPrinterSamplesDB
Relatório de exemplo
..FastReportPrinterSamplesReport
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
Exemplo compilado
Download: Demo.zip
Teste de desempenho para aplicações web usando JMeter:
..FastReportPrinterSamplesJMeter
FastReportPrinter is free and open-source software licensed under the