EXEMPLOS DE RELATÓRIOS PDF UTILIZANDO APPS BLANK

Olá, pessoal.

Tenho percebido a necessidade de alguns em trabalhar com relatórios PDF.

Assim como alguns aqui do fórum, tentei utilizar as apps do tipo Report PDF, mas percebi algumas restrições.

Como já conhecia a FPDF, passei a gerar meus relatórios utilizando apps do tipo Blank, pois me permitem maior personalização sobre tudo:

Cabeçalho, rodapé, título, múltiplas linhas, vários layouts, cores etc.

Seguem alguns modelos que tenho produzido:

http://wennys.com.br/sistemas/modelos/fpdf/listagem_subselect_scriptcase/

http://wennys.com.br/sistemas/modelos/fpdf/listagem_simples_scriptcase/

Vou disponibilizar os códigos de alguns relatórios pra servir de exemplo.

Vi que muitos aqui no fórum utilizam consultas formato livre para impressão de algumas coisas, mas acho que nada substitui um PDF quando se fala em impressão.

Wennys Carlos

Concordo plenamente Wennys Carlos, e afinal parabéns ficou maravilhosos os exemplos.

Olá Wennys Carlos, tudo bem?

Vi seus relatórios em PDF e ficaram bem legais! Você comentou que estaria disponibilizando alguns códigos para servir de exemplo, seria possível esta ajuda? Os códigos destes dois que enviou como modelo seria bastante interessante, se possível, é claro.

Att. Edison Corrêa

Wennys,

Pode descrever as restrições do report pdf?

O que você faz numa blank que não consegue fazer numa report pdf?

Bem, vou descrever aqui minha experiência com relatórios pdf.

Eu uso Report PDF.

Diferença em usar em blank: Muitas…

RPDF: Possui Filtro
BLANK: Tem que criar uma app de controle e passar parametros

RPDF: Campos pré formatados:
BLANK: tem que aplicar formatações, mascaras…

RPDF: Debug funcional
BLANK: com a classe fpdf o debug não funciona adequadamente…

RPDF: Facilmente adaptável classes extras a classe fpdf.

RPDF: Loop do SELECT (SQL) principal automático.
BLANK: Tem que fazer o loop na unha.

RPDF: Definições das dimensões e estilo em Configurações.
BLANK: Tem que definir com código.

RPDF: Liberdade Total, basta criar um método e programar livremente nesse método como programa na onExecute da Blank, e chamar esse método em LayOut/Código.

RESTRIÇÃO ÚNICA DO RPDF: Remover todos os campos criados inicialmente em Layout/Interface.

Haroldo, você tem razão em relação a algumas vantagens que existem na App ReportPDF, porém a documentação e exemplos da mesma são muito ruins.

Creio que isso tenha afastado muitos usuários que já utilizavam a FPDF(meu caso, por exemplo), que sentiram dificuldade em fazer algumas coisas que faziam sem maiores problemas.

Dificuldades que tive no início:

Como personalizar cabeçalho e rodapé para todos os relatórios criados no projeto sem precisar ficar copiando e colando para cada aplicação?

Como definir largura dos campos(colunas) sem aquela régua?

Como definir borda e cor de fundo para as colunas?

Tudo o que citei acima consigo fazer sem dificuldades numa blank.

Eu adoraria não precisar usar blank, mas não consegui ver nenhum exemplo de uma app ReportPDF que resolvesse isso de forma simples.

É como eu disse, da mesma forma que vc tem a liberdade de desenvolver numa Blank você faz o mesmo no reporte pdf em um método, a mesma programação.

Creio que sim, Haroldo.

Se puder mostrar pra gente um exemplo de um método que vc tenha feito seria legal.

http://iw.servehttp.com:86/sc/7.1/app/ERP_V7/vendasPedido_pdf/vendasPedido_pdf_teste.php

selecione pedido 13.

SQL Principal:
SELECT
p.Id,
p.Status,
c.cl_codigo,
c.cl_razao,
c.cl_cnpj,
c.cl_ieim,
c.ra_codigo,
c.cl_cep,
c.cl_uf,
c.cl_cidade,
c.cl_bairro,
c.cl_endereco,
c.NroComp,
c.cl_contato,
c.cl_dddfone,
c.Fax,
c.cl_email,
p.DataEmissao,
p.DataEntrega,
p.observacoes,
p.CondPagId,
p.TransportId,
e.em_logo,
e.em_cep,
e.em_bairro,
e.em_endereco,
e.em_uf,
e.em_fone,
e.Email,
e.em_cidade,
e.em_compl,
e.em_razao,
e.em_site,
p.ValorTotal,
(p.ValorTotal-p.Desconto+p.ValorFrete) as TotalPed,
p.Desconto
, p.ValorFrete
, p.notafiscal
, p.nroitens as total_itens
, v.NomeReduzido
, v.email
, c.apelido
FROM
pedido p
INNER JOIN clientes c ON p.ClienteId = c.cl_codigo
LEFT JOIN vendedor v ON p.vendedorid = v.id,
empresas e
WHERE
(p.Id=’[pedidoid]’)
and (e.em_codigo=‘1’)

LayOutPDf/Interface: vazia

LayOutPDF/Codigo:

$this->Codigo();

Metodo Codigo:

$PEDIDOID=[pedidoid];
$_sql=“SELECT ProdutoCodigo,Descricao,Quantidade,Unidade,PrecoUnitario”
.",ROUND((1-(ValorItem/(Quantidade*PrecoUnitario)))*100.00,2),ValorItem"
." FROM pedido_itens"
." WHERE PedidoId = ‘$PEDIDOID’";

sc_select(ds,$_sql);
If (!Empty($ds)){
while (!$ds->EOF){
$LINHA++;
$ITENS++;
IF ($LINHA==1) {
MontaPreImpresso($PAGINA);
MontaCabecalho();
}
$LINHA=$LINHA+(MontaItem($ds->fields[0],$ds->fields[1],$ds->fields[2],$ds->fields[3],$ds->fields[4],$ds->fields[5],$ds->fields[6],$LINHA));
IF ($LINHA>=[maxlines]) {
IF ($PAGINA==1) MontaTotais();
$PAGINA++;
[maxlines]=38;
PrintCell(05,290,‘Pag ‘.$this->Pdf->PageNo().’/@TotPag’,200,2,‘C’,“Arial,I,8”);
PrintCell(05,290,“Continua na proxima página–>”,205,2,“R”,“Arial,I,7,90”);
IF ($ITENS<{total_itens}) $this->Pdf->AddPage();
$LINHA=0;
}
$ds->MoveNext();
}
$ds->Close();
}
IF ($PAGINA==1 && $LINHA<[maxlines] ) MontaTotais();
PrintCell(05,290,‘Pag ‘.$this->Pdf->PageNo().’/@TotPag’,205,2,‘C’,“Arial,I,8”);

Métodos PHP :

Codigo

MontaCabecalho

MontaItem

MontaPreImpresso

MontaTotais

PrintCell

RoundedRect

_Arc

Você pode criar bibliotecas para padronizar seus cabeçalhos, rodapé.

Wennys show de bola mas não achei os fontes, ou seja as apps exportadas.

Haroldo estou tentando usar o reportPDF, porém a imagem de plano de fundo fica com a qualidade ruim, você poderia dar uma dica de como você trabalha com a imagem, extensão, tamanho, qualidade, qual programa você usa e qual tamanho da imagem para um relatório de tamanho A4.

Eu não tive uma boa experiência com o RepoprtPDF. No blank achei mais produtivo. Cada um tem seu ponto de vista de acordo com seu nível de conhecimento.
Um exemplo que fiz na Blank e não consegui nem a paw fazer com RPDF:

http://www.tickimg.com.br/uploads/imagem(1).png

O ReportPdf eh tão livre quando uma Blank.

Mas com a pre formatação dos campos, com filtro, e alguns eventos.

Haroldo, estou tentando usar o reportPDF, porém a imagem de plano de fundo fica com a qualidade ruim, você poderia dar uma dica de como você trabalha com a imagem, extensão, tamanho, qualidade, qual programa você usa e qual tamanho da imagem para um relatório de tamanho A4. Vi seu exemplo e a qualidade da imagem que você utiliza é muito boa.

Não utilizo imagem de fundo, pesa muito o arquivo e a imagem distorce.

Eu desenho todo o formulário com os comandos do fpdf.

Paulo, procure um programa chamado FileMinimizer, ele é perfeito para o qw vc quer. Eu utilizo em meus sistemas e a imagem fica 1000000000% , ou seja, não perde qualidade alguma.

Fred, parabéns ficou excelente o relatório, deve ter dado um trabalho grande hein fazer essas caixinhas. Tenho que estudar o FPDF mesmo, minha esperança era que o exemplo do Haroldo fosse a imagem assim, seria menos trabalhoso fazer, pois bastava alinhar os campos. Mas entendi não importa se for usar a blank ou reportpdf o caminho é sempre o FPDF. A biblioteca que o scriptcase usa já é o fpdf? Se eu chamar comandos no reportpdf ele já reconhece todos ou tenho que ter uma biblioteca externa?

Sim, a biblioteca do SC eh o fpdf.

Depois que você constrói suas próprias bibliotecas a construção fica mais fácil, hoje tenho rotinas prontas que fazem isso.

Haroldo,
poderia me enviar um exemplo de relatorio na v8…
usando ppDFReport…

sergio.miguell@msworks.com.br

Não homologamos a v8 aqui na empresa ainda