Geração de PDF em Golang (PDF)

Geracao De Pdf Em Golang Pdf



Portable Document Format ou PDF, abreviadamente, é um formato de arquivo incrivelmente popular e versátil usado em documentos. PDF é compatível com quase todas as plataformas e sistemas, o que o torna uma excelente opção para compartilhar documentos.

Quando se trata de desenvolvedores, podemos nos deparar com casos em que precisamos gerar programaticamente os documentos PDF com base nos dados de entrada. Por exemplo, você pode ter um aplicativo da web que gera faturas em PDF com base nas informações de compra do banco de dados.

Felizmente, o ecossistema Go é enorme e existem ferramentas e recursos para realizar a geração de PDF com facilidade, sem construir do zero.







Neste tutorial, aprenderemos como usar o pacote “fpdf” que oferece recursos poderosos para gerar documentos PDF com base nos dados de entrada.



Configuração do ambiente

Antes de prosseguirmos, certifique-se de ter as seguintes ferramentas instaladas:



  1. Certifique-se de ter o compilador Go mais recente instalado em seu sistema
  2. Um editor de código

Instale o Gofpdf

Depois de configurar o projeto, use o comando “go get” para instalar o pacote “fpdf”.





$ ir obtenha o github . com / ir - pdf / fpdf

Uma vez instalado, podemos prosseguir e abordar os recursos fornecidos pelo pacote para geração de PDF.

Crie um documento PDF básico

Considere o código de exemplo a seguir que demonstra como usar este pacote para criar um PDF básico com base em um texto de entrada básico.



pacote principal

importar (
'github.com/go-pdf/fpdf'
)

função principal () {
pdf := fpdf . Novo ( 'P' , 'milímetros' , 'A4' , '' )
pdf . Adicionar Página ()
pdf . DefinirFonte ( 'Arial' , 'B' , 16 )
pdf . Célula ( 40 , 10 , 'É um pé no saco...' )
pdf . OutputFileAndClose ( 'lorem.pdf' )
}

No exemplo dado, começamos importando os pacotes que precisamos. No nosso caso, precisamos apenas do pacote “fpdf”.

A seguir, criamos um novo documento PDF usando a função fpdf.New() e especificamos as propriedades do PDF, como orientação da página, unidade de medida e tamanho.

A seguir, adicionamos uma nova página usando a função AddPage().

Em seguida, definimos a fonte e o tamanho do documento usando a função SetFont(). Também adicionamos uma área retangular, também conhecida como célula, com a função Cell() para exibir o texto.

Por fim, geramos o PDF e o salvamos com o método OutputFileAndClose().

Adicione as imagens

Também podemos adicionar suporte para imagens, conforme mostrado no código de exemplo a seguir:

pacote principal

importar (
'github.com/go-pdf/fpdf'
)

função principal () {
pdf := fpdf . Novo ( 'P' , 'milímetros' , 'A4' , '' )
pdf . Adicionar Página ()
pdf . Opções de imagem ( 'linux-tux.png' , 10 , 10 , 40 , 0 , falso , fpdf . Opções de imagem { Tipo de imagem : 'PNG' , LerDpi : verdadeiro }, 0 , '' )
errar := pdf . OutputFileAndClose ( 'exemplo.pdf' )
se errar != nada {
pânico ( errar )
}
}

Isso deve incluir a imagem especificada no documento.

Documento de várias páginas com cabeçalhos e rodapés

O pacote também suporta múltiplas páginas, incluindo recursos como cabeçalhos e rodapés, conforme mostrado no exemplo a seguir:

pacote principal

importar (
'strconv' //Importa o pacote strconv

'github.com/go-pdf/fpdf'
)

função cabeçalho ( pdf * fpdf . Fpdf ) {
pdf . DefinirFonte ( 'Arial' , 'B' , 12 )
pdf . Célula ( 0 , 10 , 'Cabeçalho da página' )
pdf . Ln ( vinte )
}

função rodapé ( pdf * fpdf . Fpdf ) {
pdf . DefinirY ( - quinze )
pdf . DefinirFonte ( 'Arial' , 'EU' , 8 )
pdf . Célula ( 0 , 10 , 'Página ' + strconv . afogado ( pdf . Página Não ()))
}

função principal () {
pdf := fpdf . Novo ( 'P' , 'milímetros' , 'A4' , '' )
pdf . SetHeaderFunc ( função () { cabeçalho ( pdf ) })
pdf . SetFooterFunc ( função () { rodapé ( pdf ) })

pdf . Adicionar Página ()
pdf . DefinirFonte ( 'Arial' , '' , 12 )
para eu := 0 ; eu < 40 ; eu ++ {
pdf . Célula ( 0 , 10 , 'Imprimindo número da linha' + strconv . afogado ( eu ))
pdf . Ln ( 12 )
}

pdf . OutputFileAndClose ( 'multipáginas.pdf' )
}

Neste caso, definimos funções de cabeçalho e rodapé para definir o conteúdo dessas seções do PDF.

Em seguida, usamos SetHeaderFunc e SetFooterFunc para especificar as funções como cabeçalho e rodapé do documento.

Finalmente, usamos um loop para criar múltiplas linhas de texto que resultam em múltiplas páginas. O PDF resultante é o seguinte:

Aí está!

Conclusão

Neste tutorial, aprendemos muito sobre geração de PDF em Go usando o pacote “fpdf”. Este pacote vem com muitas ferramentas e recursos para gerar PDFs. Verifique a documentação para saber mais.