Categories: todas

Extensão vReport

  • VReport: Documentação
  • por Vinícius Nunes Lage
  • op.vini@gmail.com / www.isecretaria.net/vinicius

VReport é uma extensão openSource escrita em javaScript(pequena biblioteca) voltada para desenvolvedores Web que necessitam criar relatórios com cabeçalho e rodapé, para serem impressos em todas as páginas na impressão. A extensão torna simples e profissional essa tarefa que a primeira vista parece simples de implementar, mas que na realidade pode se tornar complexa de acordo com o estilo do relatório a ser criado.

A página oficial da extensão, para download e informações adicionais é:
http://www.isecretaria.net/VReport/

A extensão é composta por 3 arquivos, não altere de forma alguma nenhum deles:

  • VReport.js: biblioteca escrita em javaScript que executa todo o processamento
  • VReport_print.css: folha de estilo que define as propriedades corretas para impressão
  • VReport_screen.css: folha de estilo que define as propriedades corretas para exibição na tela do navegador

Na página do relatório é necessária a inclusão destes três arquivos citados, da seguinte forma:

  • As folhas de estilos devem ser incluídas dentro da tag <head> da seguinet forma:
    <link rel="stylesheet" type="text/css" href="VReport_print.css" media="print" />
    <link rel="stylesheet" type="text/css" href="VReport_screen.css" media="screen" />
  • O arquivo VReport.js, responsável pelo processamento do relatório, deve ser incluído ao final da página do relatório, por exemplo antes de </body> ou </html>, pois ele organiza todo o arquivo depois que o relatório já foi criado. Se ele for inserido dentro da tag <head>, como é normal, ele não vai organizar o relatório de forma correta, já que “tal ainda não foi criado”. Este arquivo deve ser inserido da seguinte forma:
    <script src="VReport.js" type="text/javascript"></script>

O cabeçalho, o rodapé e o conteúdo de todo o relatório podem conter qualquer tag HTML, bem como qualquer tipo de código dinâmico, seja PHP, ASP[.NET], JSP etc, e devem ser inseridos dentro da tag <body>, na ordem correta(cabeçalho, conteúdo, rodapé) da seguinte forma:

  • O cabeçalho deve ser definido dentro de uma div com id=”_VReportHeader”:
    <div id=”_VReportHeader”>aqui vem o cabeçalho</div>
  • O conteúdo deve ser definido por completo dentro de uma div com id=”_VReportConten”:
    <div id=”_VReportContent”>aqui vem o conteúdo completo</div>
  • O rodapé deve ser definido dentro de uma div com id=”_VReportFooter”:
    <div id=”_VReportFooter”>aqui vem o rodapé</div>

Os estilos dessas 3 div’s podem ser criados sem problemas, com uma pequena restrinção quanto à propriedade position. Se essa propriedade for setada para qualquer uma dessas três div’s, o relatório pode não sair como esperado.

Para visualizar a impressão de seus relatórios criados com o VReport, procure “visualizar impressão” ou “print preview” em seu navegador.

Exemplo simples de um relatório usando VReport

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>VReport blank example</title>
<!-- 
Aqui vem alguns estilos definidos para as div's do cabeçalho, conteúdo e rodapé, essas propriedas podem ser alteradas sem problemas
 -->

<style>
#_VReportHeader {
 font-family: Tahoma, Geneva, sans-serif;
 font-size: 14px;
 font-weight: bold;
 border-bottom: 1px dashed gray;
 width: 100%;
 padding: 3px;
 text-align: center;
}
#_VReportFooter {
 font-family: Verdana, Geneva, sans-serif;
 font-size: 12px;
 border-top: 1px dashed gray;
 width: 100%;
 text-align: center;
}
#_VReportContent{
 font-family:Tahoma, Geneva, sans-serif;
 font-size: 14px;
}
</style>

<!-- Aqui vem o include com as folhas de estilos necessárias -->
<link rel="stylesheet" type="text/css" href="VReport_print.css" media="print"/>
<link rel="stylesheet" type="text/css" href="VReport_screen.css" media="screen" />
<!-- Fim da inclusão das folhas de estilos ncessárias -->
</head>
<body>
<!--
Agora são criadas as div’s importantes relativas ao cabeçalho, conteúdo e rodapé, nesta ordem
-->
<div id="_VReportHeader">cabeçalho</div>
<div id="_VReportContent">conteúdo</div>
<div id="_VReportFooter">rodapé</div>
<!-- Aqui vem o arquivo responsável pelo processamento do relatório -->
<script src="VReport.js" type="text/javascript"></script>
</body>
</html>
<!-- Fim do relatório -->

Agradecimentos importantes:

  • Câmara Municipal de Ouro Preto
  • Leonardo Basílio
  • Rafael Capucho
  • Rafael Gomes

IMPORTANTE: procure visitar a página oficial da extensão com uma freqüência razoável, para ficar atualizado com as novas versões que podem sair. Qualquer bug pode ser notificado pelo e-mail citado logo no início deste documento.

LICENÇA: o VReport pode ser utilizado por qualquer pessoa, para qualquer fim, sendo necessário apenas a citação no sistema ou site que utiliza a extensão.

Nota do Maujor: o texto desta matéria é de autoria do autor da extensão e publiquei, a pedido dele, para divulgar a extensão.

Maujor

View Comments

  • Não funciona com mais de uma página.

    E mesmo com uma página precisei alterar as positions das divs.

    =/

  • olá....preciso que em cada cabeçalho de pagina ele imprima o número da pagina... tem como?

    aguardo....abraço!

  • não funcionou no chrome 4.1.249.1059

    no ie e no firefox funcionou, no entanto, preciso dele no chrome, pois aqui a pouco tempo todos passaram a usar somente esse navegador.

  • Muito bom como sempre funciona!

    Tem como forçar a quebra de página na impressão?

  • Procurei bastante por isso, e finalmente resolveu meu problema.
    Obrigado!

  • salvou minha vida tambem, como esses posts são bens vindos, rsrs

    Abraços

  • parabens pelo desenvolvimento de um pequeno javaScript que muita gente precisa.

    parabens
    salvou a patria

Share
Published by
Maujor

Recent Posts

Teste seu conhecimento #20

Em 2006 comecei a publicar nesse blog uma série de desafios CSS que consistiam em…

7 anos ago

Teste seu conhecimento #19

Há muito tempo que eu não publico um "Teste seu conhecimento". Esta semana, revendo algumas…

10 anos ago

JavaScript bubbling e capturing

Introdução Elementos da marcação HTML podem ser aninhados uns dentro de outros, criando-se uma cadeia…

10 anos ago

HTML5 – W3C versus WHATWG

HTML5? Web universal? É comum eu me deparar com dúvidas sobre a HTML5 não só…

10 anos ago

Seria esse o futuro das imagens responsivas?

Quem é Tab Atkins Jr? Tab Atkins Jr, um desenvolvedor americano, trabalhou durante muitos anos…

11 anos ago

BrazilJS Conf 2013

Pessoal, a BrazilJS Conf 2013 disponibilizou para o Maujor cupons de desconto para serem oferecidos…

11 anos ago