Jump to content
uniGUI Discussion Forums
Emiliano

Quais os componentes de impressão que vocês estão usando? E como fazem o preview de impressão

Recommended Posts

Olá

 

Gostaria de saber quais os componentes de impressão vocês já testaram? reportbuilder, quickreport, fortes, rave, etc...

Como vocês estão fazendo o preview de impressão gerando um pdf?

 

 

Qualquer dica é bem-vinda.

 

Att

Share this post


Link to post
Share on other sites

Eu uso o Report Builder 15. Existem exemplos aqui no fórum do uso do unigui com esse componente para gerar o PDF.

Share this post


Link to post
Share on other sites

Uso o FastReport, muito simples exportar por ele e visualizar o pdf no navegador.

Share this post


Link to post
Share on other sites

Olá Prof. Emiliano,

 

  Tenho utilizando o FastReport e ReportBuilder com sucesso.

  O procedimento que tenho utilizando é gerar/exportar o relatório em formato PDF no diretório Temp da estrutura de diretórios do UniGUI.

  O Preview eu fiz criando um Form padrão do Unigui com o componente TUniURLFrame, e a chamada fica assim:

  PaginaRelatorio.ShowModal;

  PaginaRelatorio.ver.url:= UniServerModule.TempFolderURL + '\' +vdestino;

 

  Com isso vc pode criar uma barra personalizada de opções no form para por exemplo Fechar a visualização ou Imprimir, etc.

 

  Observação: mesmo assim é necessário ter um plugin de PDF instalado para poder visualizar.

  Dica: o nome do arquivo PDF que vc vai gerar deve ser único, já que mais de um usuário pode gerar o mesmo relatório simultaneamente.

 

  Problemas de desempenho:

  A primeira forma que eu utilizei para criar os relatórios no UniGUI foi a clássica, ou seja, colocar os componentes de relatório no formulário do UniGUI onde vc tem as entradas para os filtros e opções, assim vc gera/exporta o PDF para o disco e depois visualiza.

  Esta abordagem clássica começou a gerar problemas de desempenho na minha aplicação. 

  Atualmente eu tenho cerca de 1.000 usuários simultâneos utilizando a aplicação e muitos relatórios grandes e demorados para gerar.

  Com isso comecei a perceber quando muitos usuários simultâneos geram relatórios a aplicação como um todo perdia desempenho e os usuários começaram a reclamar de lentidão.

 

  A solução que eu encontrei para resolver este problema de desempenho foi separar os relatórios da aplicação UniGUI.

  Criei um servidor de relatórios em Delphi, Assim a minha aplicação UniGUI chama o relatório via uma API REST, o Servidor de Relatórios gera o PDF e devolve para a aplicação UniGUI.

  Assim também consegui separar a geração dos relatórios em outro servidor.

 

 Se quiser mais detalhes entre em contato,

 

 Atenciosamente.

 

Luiz A. Lenhardt

e-mail: luizlh@gmail.com

Share this post


Link to post
Share on other sites

eu fiz umas implementacoes especificas no report builder que consiste basicamente criar parametros de entrada que sao gravados em uma tabela

nessa tabela eu defino algumas informacoes...

 

nome

tipo  (data, numero, checkbox,inteiro,texto, combobox, memo, pesquisa em tabela externa)

texto do controle

etc..

 

 

essa tabela de parametros e vinculo com os filtros dos relatorios.

nesse caso eu posso ter parametros de entrada que nao sao necessariamente vinculados a filtros.

 

ex: preciso de um campo na tela de filtro onde o usuario digite um texto, e esse texto sera usado no caption de um label

nao sera usado em um filtro da consulta...

 

 

com base nessa tabela

 

eu criei uma rotina no unigui (ja tinha ela em vcl) que le a tabela e cria os controles dinamicamente 

e no botao ok, eu chamo o relatorio e passo para ele os parametros..

 

la no relatorio eu leio esses parametros e passo para os filtros das consultas gero o relatorio e devolvo o pdf

 

a praticidade dessa rotina e que o mesmo relatorio quando esta pronto, ja serve para o sistema desktop e para o sistema web

 

no projeto unigui ou no vcl nao tenho que alterar nada para incluir um novo relatorio.

 

pois nos clicks dos botoes ao chamar o relatorio, eu tambem crio os menus(popmenu) dinamicamente com base em uma tabela

que contem a relacao dos relatorios que ira ser usado no local xxx

 

 

ex: no modulo de vendas ao clicar em um botao, lista os relatorios do modulo 'VENDAS'

 

ao clicar no relatorio a tela de filtro e criada dinamicamente e o relatorio e executado.

 

 

assim a distribuicao de novos relatorios e extremamente simples, pois nao tenho que mexer uma , no projeto unigui nem no projeto vcl

 

 

assim posso migra meu projeto aos poucos, e os relatorios sao 100% aproveitados nos 2 ambientes..

 

 

outra coisa que tambem estou conseguindo compartilhar sao funcoes de manipulacao de dados, rotinas diversas que nao tem interacao com usuario

 

funcoes que recebe alguns parametros processa alguma coisa e devolve um resultado..

 

tudo isso jogo em uma unit e compartilho entre os 2 projetos, que inclusive sao ate em versoes diferentes do delphi

 

o projeto vcl ainda ta no delphi 2010... do unigui ja comecei usando o xe7

Share this post


Link to post
Share on other sites

Olá, tenho uma rotina no Report Builder que gera um PDF em cache e mostra na tela: http://forums.unigui.com/index.php?/topic/9126-pdf-problems-in-iis-and-unigui/

 

Porém, só funciona com modo debug(.exe). Quando publico no IIS o modo Release(.dll), simplesmente não mostra o PDF na aplicação, a rotina não gera cache.

 

Alguém sabe a solução pra esse problema?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×