Geração de PDF em C++: visão geral de bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geração de PDF em C++: visão geral de bibliotecas e ferramentas



A geração de documentos PDF é uma das tarefas frequentes no desenvolvimento de software. Relatórios, faturas, certificados, documentação — tudo isso requer uma ferramenta confiável e flexível para criar PDFs. No ecossistema C++, existem várias soluções testadas, cada uma com seus pontos fortes. Neste artigo, veremos as principais bibliotecas e ferramentas que ajudarão você a implementar a geração de PDF em C++, além de fornecer exemplos de código para cada uma delas.



1. PoDoFo — biblioteca poderosa para trabalhar com PDF



PoDoFo é uma biblioteca multiplataforma em C++ projetada para criar, editar e analisar documentos PDF. Ela fornece controle total sobre a estrutura do arquivo, suporta fontes, imagens, anotações e formulários.



Principais recursos:

  • Criação de PDF do zero e edição de documentos existentes
  • Suporte para TrueType, Type1 e fontes padrão PDF
  • Incorporação de imagens (PNG, JPEG, TIFF)
  • Trabalho com tabelas e documentos de várias páginas
  • Suporte para compactação e criptografia


Exemplo de código: criação de um PDF simples com texto

#include <podofo/podofo.h>using namespace PoDoFo;

int main() { PdfMemDocument document; PdfPage* page = document.CreatePage(PdfPage::CreateStandardPageSize(PdfPageSize::A4)); PdfPainter painter; painter.SetPage(page);

// Define a fonte PdfFont* font = document.CreateFont("Arial"); painter.SetFont(font, 12.0);

// Desenha o texto painter.DrawText("Olá, mundo PDF!", 50, 700);

painter.FinishPage(); document.Save("output_podofo.pdf"); return 0;}


2. libharu — biblioteca leve e rápida



libharu (ou HPDF) é uma biblioteca minimalista em C para geração de PDF. Apesar de ser escrita em C, ela funciona perfeitamente com C++ e não requer dependências complexas. libharu é ideal para tarefas simples onde não é necessário suporte completo ao padrão PDF.



Principais recursos:

  • Suporte para texto, imagens, linhas e retângulos
  • Trabalho com cirílico através de codificações
  • Compactação de páginas
  • Licença Zlib (livre)


Exemplo de código: criação de PDF com imagem

#include <hpdf.h>#include <stdio.h>

int main() { HPDF_Doc pdf = HPDF_New(NULL, NULL); HPDF_Page page = HPDF_AddPage(pdf); HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);

// Carrega a imagem HPDF_Image image = HPDF_LoadJpegImageFromFile(pdf, "example.jpg"); HPDF_Page_DrawImage(page, image, 50, 500, 200, 150);

// Texto HPDF_Page_BeginText(page); HPDF_Page_SetFontAndSize(page, HPDF_GetFont(pdf, "Helvetica", NULL), 14); HPDF_Page_TextOut(page, 50, 700, "Exemplo com imagem"); HPDF_Page_EndText(page);

HPDF_SaveToFile(pdf, "output_libharu.pdf"); HPDF_Free(pdf); return 0;}


3. wkhtmltopdf — conversão de HTML para PDF



wkhtmltopdf não é uma biblioteca no sentido clássico, mas um utilitário de linha de comando baseado no WebKit. No entanto, pode ser facilmente chamado a partir do código C++ via system() ou popen(). É a escolha ideal se você precisa transformar um template HTML em um documento PDF preservando estilos e layout.



Principais recursos:

  • Suporte para CSS, JavaScript, tabelas e imagens
  • Configuração de margens, orientação, cabeçalhos e rodapés
  • Alta qualidade de renderização
  • Facilidade de integração


Exemplo de código: chamada do wkhtmltopdf a partir do C++

#include <cstdlib>#include <string>

int main() { std::string input = "report.html"; std::string output = "report.pdf"; std::string

Recommendations