Daniel Sousa

Um blog sobre tecnologia, internet, entre outros…

Navegando Posts publicados por Daniel Sousa

Afim de possibilitar a geração de relatórios relativamente grandes, o JasperReports dispõe de um recurso chamado “virtualização”. Ao gerar um relatório utilizando virtualização, o JasperReports busca gerenciar melhor a memória RAM utilizada para geração do mesmo, tentando assim, eliminar um grande incômodo chamado “OutOfMemoryException: Java heap space”.

Existem 3 tipos de virtualização: JRFileVirtualizer, JRSwapFileVirtualizer, e JRGzipVirtualizer. Cada uma gerencia a memória de forma distinta, cabe ao desenvolvedor identificar a situação e a que melhor se adequar ao seu problema. Neste artigo, pretendo explicar o funcionamento de cada um deles.

continue lendo…

Durante o aprendizado de um outro idioma, um dos fatores mais importantes, além da real vontade de aprender é claro, é praticar a conversação.

Uma das formas mais eficazes é realizar um intercâmbio, porém nem todos possuem recursos financeiros que possam bancar todo o custo necessário.. Mesmo assim, existem alternativas bem legais e de graça. Para quem não conhece, apresento-lhes o PalTalk.

No PalTalk, podemos praticar conversação com pessoas do mundo todo, via microfone, webcam ou simplesmente texto. Mas o mais interessante aqui, é usar o microfone.

O PalTalk é um programinha, no estilo MSN Messenger, porém  funciona de forma um pouco diferente. Lá, você procura salas de chat. Imagine o chat da UOL, onde existe diversas salas, divididas por temas. No PalTalk, as salas são criadas pelos próprios usuários,e muitas delas são dedicadas a prática do inglês.

continue lendo…

Olá Pessoal!!
Hoje procurei por alguma boa lista de discussão sobre essa ferramenta, e não encontrei nada assim aqui do Brasil.

Resolvi então criar um grupo para tal.

Espero que participem, usuários ou não, afim de podermos criar um ambiente onde a API e a ferramenta sejam o tema de foco central, e possamos ajudar e tirar dúvidas de outros usuários!

JasperReports / iReport Brasil
http://groups.google.com.br/group/jasperreports-ireport-brasil

Participem! Quanto mais gente ajudar, melhor!
Abraço! =]

Uma tarefa comum quando utilizamos tabelas, seja no MS Word/Excel, etc… , é mesclar células.

Sendo assim, é de se esperar que possamos fazê-lo também com uma tabela feita no iReport. Essa não é uma tarefa tão simples, pois não existe uma opção explícita para fazê-la, é necessário prestar atenção nos detalhes.

Para mesclar duas células (ou mais), basicamente, é necessário selecionar as colunas delas, e então agrupá-las. Desse agrupamento, um novo elemento é criado na Table (visível apenas na árvore da tabela, no painel Report Inspector). Para que a célula mesclada apareça na tabela, basta clicar com o botão direto sobre esse novo elemento, e clicar em “Add Cell”.

Fiz um vídeo, comentado em áudio, demonstrando passo-a-passo como realizar esta tarefa, espero que ajude =]

Download do material do vídeo:

JRXML

Na versão 3.7.2, o jasperReports ganhou um novo componente: Table.
E como não poderia deixar de ser, no iReport 3.7.2 podemos usar ele e criar tabelas visualmente.
No vídeo a seguir, demonstro um passo-a-passo de como utilizar esse componente.

Espero que gostem =].  Não foi possível colocar no youtube devido ao tamanho…

Em posts futuros, explicarei mais detalhes do uso da table, tais como mesclar células, esconder colunas e utilizar agrupamentos.

Vídeo: Usando o componente Table (Têm Áudio)

Download do material do vídeo:

JRXML
PDF

Obs: A base de dados eu disponibilizo para download também caso alguém se interesse.

No post anterior, falei sobre a biblioteca mPDF, para geração de arquivos PDF.

Hoje, apresento uma forma de integrar essa biblioteca no framework CodeIgniter.

Download mPDF:  http://mpdf.bpm1.com/

Download CodeIgniter: http://codeigniter.com/

Dê um nome qualquer a pasta do mPDF, vou considerar daqui pra frente como “mpdf_lib“.

Coloque a pasta mpdf_lib dentro do CodeIgniter, na pasta “system/plugins

Ficaremos então com a seguinte estrutura:
continue lendo…

Depois de muito “googlear” uma maneira de converter páginas HTML em arquivo PDF, muitos dos resultados encontrados no google apontam que a melhor biblioteca a ser usada é a dompdf. Está certo que, se reparar bem, a maioria dos sites que indicam essa biblioteca datam de 2008 ou menos…

Se essa era a “melhor”, resolvi testá-la.

Me atendeu razoavelmente bem na sua tarefa principal “Html para PDF”.  Porém, se você quer formatar o PDF usando CSS, o suporte dessa biblioteca é horrendo. Muitos atributos não funcionam, e os que funcionam, hora só funcionam quando define-se a classe no próprio html (sem usar uma folha externa), hora só funcionam quando colocados inline ( usando o atributo style na própria tag html).

Até aí, ainda dá pra fazer um acerto aqui, e alí, e dá pra usar….

Porém um bug GRAVE, me fez obrigado abandonar essa bilioteca:  Se houver uma “table” que venha ocupar mais de uma página quando gerando o PDF, é levantada uma exceção: Uncaught exception ‘DOMPDF_Internal_Exception’ with message ‘Frame not found in cellmap

Depois de me decepcionar com o dompdf, busquei alguma outra solução. Para minha sorte, encontrei um post do Diogo Besson “mPDF PHP e PDF” que fala sobre a biblioteca mPDF.

Simplesmente FANTÁSTICA!!!!

Possui tudo que a dompdf possui, e muito mais….. tem suporte até para CSS 3!! A documentação no site oficial então, nem se fala… completíssima. É de longe…. bem melhor que a dompdf, tanto na perfeição dos PDFs gerados, quanto na possibilidade de customização dos mesmos.

Dêem uma lida no post do Diego Besson, lá ele já colocou alguns exemplos de uso, dos quais prefiro não repetir aqui.

Adotei a mPDF para todos os projeto “PHP” em que trabalho, e recomendo fortemente seu uso.

Nesse post, não pretendo explicar o que é um ORM (SQLObject, Alchemy, Hibernate, etc..), nem o que é uma transação.

Quem sabe em um post futuro… por hora, dexarei ao final deste post alguns links interessantes sobre o assunto. O foco é mostrar como utilizar uma transação com python, usando o sqlobject.

Bom, vamos lá..
continue lendo…

Esse domingo, estava me preparando para postar aqui no site meu primeiro video-tutorial sobre relatórios com o ireport 3.5.3, quando tive que enfrentar um pequeno empasse.

O script para inserção de registros no banco de dados (PostgreSQL) que eu estava preparando estava com um pequeno problema. As datas estavam num formato inválido “DD MM YYYY”:

INSERT INTO organization VALUES ('AL', 'Arab League',  'Cairo', 'ET', 'El Qahira (munic.)', '22 03 1945');
INSERT INTO organization VALUES ('AG', 'Andean Group', 'Lima', 'PE', 'Lima', '26 05 1969');
INSERT INTO organization VALUES ('C',  'Commonwealth', 'London', 'GB', 'Greater London', NULL);
INSERT INTO organization VALUES ('NAM','Nonaligned Movement', 'Jakarta', 'RI', 'Indonesia', '01 09 1961');

Notem que, para o banco de dados aceitar esses INSERTs, a data deveria estar no formato “YYYY-MM-DD”.
Eu poderia muito bem ter arrumado as datas na mão, claro, mas eram mais de 150 linhas, e eu demoraria muito fazendo isso…
continue lendo…

Lançado o iReport 3.5.3 .

Essa versão corrige uma série de bugs vindos das versões 3.5.1 e 3.5.2, além de trazer novidades interessantes:

– Atualizado para a versão do JasperReports 3.5.3
– Melhorias na tela de edição de expressões
– Subrelatórios são compilados automaticamente
– Melhoria na exportação para XML
– Novos formatos de exportação:  XHTML e DOCX
– Detecta automaticamente os softwares que abrem os relatórios gerados, não necessitando de configurá-los
– Novo template wizard, com vários modelos disponíveis

O download da versão standalone pode ser efetuado no link abaixo:
http://sourceforge.net/projects/ireport/files/

Para aqueles que preferem utilizar o iReport como plugin do NetBeans, podem baixá-lo no seguinte link:
http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=4425

Em breve, postarei artigos sobre esta nova versão..

Abraços!!