Ir para o conteúdo do rodapé
FERRAMENTAS DE PDF

Como criar arquivos PDF em C++

Os arquivos PDF (Portable Document Format) são amplamente utilizados para compartilhar e preservar documentos em um formato consistente em diferentes plataformas. Neste artigo, exploraremos como gerar arquivos PDF em C++ usando a biblioteca wkhtmltopdf. É uma ferramenta de linha de comando de código aberto, usada para converter conteúdo HTML em arquivos PDF . Ao aproveitar o poder desta biblioteca, podemos criar documentos PDF a partir de conteúdo HTML de forma programática em nossas aplicações C++.

Biblioteca WkhtmltoPdf

O wkhtmltopdf é uma ferramenta de linha de comando e um mecanismo de renderização de código aberto que converte páginas da web HTML ou conteúdo HTML em documentos PDF. Ele utiliza o mecanismo de renderização WebKit para analisar e renderizar HTML, CSS e JavaScript e, em seguida, gera um arquivo PDF com base no conteúdo renderizado.

" Biblioteca wkhtmltopdf C++ " (também conhecida como "API wkhtmltopdf C"). Esta biblioteca fornece uma interface C++ para a ferramenta de linha de comando wkhtmltopdf, permitindo que você crie arquivos PDF a partir de conteúdo HTML diretamente em seus aplicativos C++. Vamos analisar o processo passo a passo de conversão de HTML para PDF em C++ usando a biblioteca Wkhtmltopdf.

Pré-requisitos

Para criar arquivos PDF em C++, precisamos do seguinte:

  1. Um compilador C++, como o GCC ou o Clang, instalado em seu sistema. Você pode usar qualquer IDE que suporte programação em C++.
  2. A biblioteca wkhtmltopdf foi baixada e instalada. Você pode baixar a versão mais recente do site oficial do wkhtmltopdf e instalá-la seguindo as instruções do seu sistema operacional.
  3. Conhecimento básico de programação em C++.

Criar projeto PDF em C++ no Code::Blocks

Crie um projeto no Code::Blocks e siga os passos abaixo para vincular a pasta e o arquivo da biblioteca. Se estiver usando outra IDE, as opções podem ser diferentes, mas você precisa referenciar a biblioteca baixada no seu projeto para que funcione.

1. Adicionando pasta de inclusão em Diretórios de Pesquisa

Para garantir que o Code::Blocks consiga encontrar os arquivos de cabeçalho necessários, precisamos configurar os diretórios de pesquisa.

  1. Clique no menu "Projeto" na barra de menus e selecione "Opções de compilação". Certifique-se de selecionar "Depurar".
  2. Na caixa de diálogo "Opções de compilação", selecione a guia "Pesquisar diretórios".
  3. Na aba "Compilador", clique no botão "Adicionar".
  4. Navegue até o diretório onde os arquivos de cabeçalho do wkhtmltox estão localizados (por exemplo, C:\Program Files\wkhtmltopdf\include ) e selecione-o.
  5. Por fim, clique em "OK" para fechar a caixa de diálogo.

Como criar arquivos PDF em C++: Figura 1

2. Vinculando as bibliotecas nas configurações do vinculador

Para criar um link para a biblioteca wkhtmltox , siga estes passos:

  1. Novamente, clique no menu "Projeto" na barra de menus e selecione "Opções de compilação". Certifique-se de selecionar "Depurar".
  2. Na caixa de diálogo "Opções de compilação", selecione a guia "Configurações do vinculador".
  3. Na aba "Bibliotecas vinculadas", clique no botão "Adicionar".
  4. Navegue até o diretório onde os arquivos da biblioteca wkhtmltox estão localizados (por exemplo, C:\Program Files\wkhtmltopdf\lib ) e selecione o arquivo de biblioteca apropriado.
  5. Clique em "Abrir" para adicionar a biblioteca ao seu projeto.
  6. Por fim, clique em "OK" para fechar a caixa de diálogo.

Como criar arquivos PDF em C++: Figura 2

Passos para criar um PDF em C++ usando Wkhtmltopdf

1. Incluir as bibliotecas necessárias

Para começar, primeiro incluiremos os arquivos de cabeçalho necessários para utilizar as funcionalidades da biblioteca wkhtmltopdf em nosso programa C++. Inclua os seguintes arquivos de cabeçalho no início do seu arquivo de código-fonte main.cpp:

#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h> // Include wkhtmltopdf library headers
C++

2. Desative o componente da GUI

Se você não estiver trabalhando com uma interface gráfica (GUI), será necessário desativá-la para evitar erros. O código é o seguinte:

wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
wkhtmltopdf_init(false); // Initialize the wkhtmltopdf library in non-GUI mode
C++

3. Inicialize as configurações e o conversor.

Em seguida, precisamos inicializar os ponteiros de configurações globais e de objeto e, em seguida, o conversor wkhtmltopdf.

wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
C++

4. Adicionando conteúdo em PDF

Agora, vamos criar uma string HTML para inserir algum conteúdo no documento PDF que acabamos de criar. O código é o seguinte:

std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
std::string htmlString = "<html><body><h1>Create a PDF in C++ using WKHTMLTOPDF Library</h1></body></html>";
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
C++

5. Converter string HTML em arquivo PDF

O wkhtmltopdf fornece um método de conversão para converter conteúdo HTML em PDF. Segue o trecho de código:

wkhtmltopdf_convert(converter); // Converts HTML content to PDF
wkhtmltopdf_convert(converter); // Converts HTML content to PDF
C++

6. Obtendo a saída como um buffer de memória

Com a função wkhtmltopdf_get_output, podemos obter os dados do PDF como um fluxo de buffer de memória. Também retorna o tamanho do PDF. O exemplo a seguir executará essa tarefa:

const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData); // Get PDF data and length
C++

7. Salvar arquivo PDF

O ponteiro pdfData agora terá o fluxo de caracteres de wkhtmltopdf_converter. Para salvar em um arquivo PDF, primeiro, especificaremos o caminho do arquivo onde queremos salvar o PDF. Em seguida, usando o fluxo de arquivo de saída, abrimos o arquivo em modo binário e escrevemos o pdfData nele, convertendo-o de tipo usando a função reinterpret_cast. Finalmente, fechamos o arquivo.

const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data
outputFile.close(); // Close the file
const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary); // Open file in binary mode
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength); // Write PDF data
outputFile.close(); // Close the file
C++

8. Liberando memória

Após criar um arquivo PDF com sucesso, é essencial liberar os recursos alocados pelo Wkhtmltopdf; caso contrário, ocorrerá um vazamento de memória.

wkhtmltopdf_destroy_converter(converter); // Destroy the converter
wkhtmltopdf_destroy_object_settings(os);  // Destroy object settings
wkhtmltopdf_destroy_global_settings(gs);  // Destroy global settings
wkhtmltopdf_deinit();                     // Deinitialize the library

std::cout << "PDF created successfully." << std::endl; // Inform the user
wkhtmltopdf_destroy_converter(converter); // Destroy the converter
wkhtmltopdf_destroy_object_settings(os);  // Destroy object settings
wkhtmltopdf_destroy_global_settings(gs);  // Destroy global settings
wkhtmltopdf_deinit();                     // Deinitialize the library

std::cout << "PDF created successfully." << std::endl; // Inform the user
C++

9. Execute o código e gere o arquivo PDF.

Agora, compile o projeto e execute o código usando F9. O resultado será gerado e salvo na pasta do projeto. O PDF resultante é o seguinte:

Como criar arquivos PDF em C++: Figura 3

Create PDF File in C

IronPDF

IronPDF é uma biblioteca PDF em .NET C# que permite aos desenvolvedores criar documentos PDF a partir de HTML sem esforço. Ela oferece uma API intuitiva que simplifica o processo de criação de arquivos PDF a partir de HTML.

O IronPDF é robusto e versátil quando se trata de trabalhar com PDFs. Ele não apenas cria um PDF a partir de documentos HTML simples, mas também páginas da web complexas com estilos CSS, interações em JavaScript e até mesmo conteúdo dinâmico. Além disso, você pode desenvolver diferentes conversores de PDF com acesso rápido aos seus métodos de conversão.

Aqui está um exemplo de código para criar um PDF com o IronPDF usando a conversão de string HTML para PDF :

using IronPdf;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");
using IronPdf;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");

// Export to a file or Stream
pdf.SaveAs("output.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer = New ChromePdfRenderer()

' Create a PDF from an HTML string using C#
Private pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")

' Export to a file or Stream
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Criamos uma instância de ChromePdfRenderer para renderizar o conteúdo HTML como um PDF. Chamamos o método RenderHtmlAsPdf no objeto renderer e passamos a string HTML. Isso gera o documento PDF e, em seguida, salvamos o documento PDF usando o método SaveAs.

Como criar arquivos PDF em C++: Figura 4

Para obter mais detalhes sobre como criar um PDF a partir de várias fontes com o IronPDF , visite esta página de exemplos de código do IronPDF .

Conclusão

Neste artigo, exploramos a geração de PDFs em C++ usando a biblioteca wkhtmltopdf e também aprendemos como usar o IronPDF para gerar documentos PDF em C#.

Com o IronPDF, gerar arquivos PDF a partir de conteúdo HTML torna-se uma tarefa simples em linguagens do .NET Framework . Seu extenso conjunto de recursos o torna uma ferramenta valiosa para desenvolvedores que precisam converter HTML para PDF em seus projetos C#. Seja para gerar relatórios, faturas ou qualquer outro documento que exija uma conversão precisa de HTML para PDF, o IronPDF é uma solução confiável e eficiente.

O IronPDF é gratuito para fins de desenvolvimento, mas para uso comercial, é necessário obter uma licença. Também oferece um período de teste gratuito para uso comercial, permitindo testar todas as suas funcionalidades. Baixe o IronPDF e experimente você mesmo.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim