[Delphi] Exportando relatórios em QuickReport para PDF com o Synopse

Olá, amigos programadores!
Hoje, o objetivo é apresentar uma maneira rápida, simples e funcional de exportar relatórios elaborados em QuickReport para PDF, sem instalações de componentes pagos e sem a necessidade de instalar a versão Professional do componente. Quer saber como? Acompanhe!

Introdução

Eu tenho um projeto de controle de pedidos desenvolvido em Delphi, no qual um dos recursos do software é gerar arquivos PDF dos pedidos para que os vendedores possam enviá-los por e-mail. Foi aí que a minha história com essa funcionalidade começou.

Primeiro, tentei utilizar a classe TQRPDFDocumentFilter da versão Professional do QuickReport, mas não fiquei satisfeito com a qualidade do documento gerado. Depois, tomei conhecimento do ExportPack (TExportQR), porém, não encontrei versões atualizadas deste componente para a família XE. Em seguida, tentei o componente Gnostice, mas, além de pago, o componente trouxe várias funcionalidades adicionais que eu não precisava.

Bom, continuei pesquisando, pesquisando… e encontrei o Synopse! É apenas uma biblioteca que deve ser vinculada ao projeto para gerar o PDF, sem complexidades.
Vamos fazer na prática?

Instalação

O primeiro passo é baixar as bibliotecas neste link e descompactá-las em uma pasta específica de bibliotecas, como, por exemplo, C:\BibliotecasDelphi.

O segundo passo é apontar esse caminho no Library Path do Delphi para que as bibliotecas sejam encontradas na compilação. Para isso, no Delphi, clique no menu Tools > Options. Ao abrir a janela, navegue até Delphi Options > Library e clique no botão de reticências do Library Path. Agora, encontre o caminho da pasta de bibliotecas e clique em Add, conforme a imagem abaixo:

Incluir Synopse no Library Path do Delphi

Codificação

O próximo passo é adicionar a unit SynPdf na seção uses do projeto. Adicione também a unit Printers, caso ainda não esteja adicionada:

Pronto! Agora é só partir para a codificação:

Problema resolvido, pessoal! 🙂

Clique neste link e baixe um exemplo dessa funcionalidade desenvolvido em Delphi XE7, mas deixo uma observação: para que o exemplo funcione em qualquer ambiente, coloquei todos arquivos do Synopse na mesma pasta do projeto, ok?

Para tirar o máximo de proveito da biblioteca, recomendo que as outras propriedades das classes sejam exploradas, como os parâmetros de criação da classe TPDFDocument, tratamento de fontes e os tipos de posicionamento de caracteres. Mesmo assim, em caso de dúvidas, deixe um comentário!

Abraços e até a próxima!


 

André Celestino