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
..\FastReportPrinter\Source
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:
..\FastReportPrinter\Samples
Banco de dados de exemplo
- Firebird: 2.5.7 Donwload
- Arquivo BD:
..\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
- VCL
- VCL (Horse)
Download: Demo.zip
FastReportPrinter-VCL.mp4
FastReportPrinter-IIS.mp4
Teste de desempenho para aplicações web usando JMeter:
..\FastReportPrinter\Samples\JMeter
FastReportPrinter
is free and open-source software licensed under the