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

Como converter HTML para PDF em C++

A capacidade de converter arquivos ou conteúdo HTML em páginas PDF é um recurso valioso em muitas aplicações. Em C++, pode ser bastante trabalhoso construir uma aplicação do zero para gerar arquivos em formato PDF a partir de HTML. Neste artigo, exploraremos como converter HTML para PDF em C++ usando a biblioteca wkhtmltopdf.

Biblioteca WKHTMLTOPDF

O wkhtmltopdf é uma ferramenta de linha de comando de código aberto que transforma páginas de texto simples HTML em documentos PDF de alta qualidade de forma integrada. Aproveitando suas funcionalidades em programas C++, podemos converter facilmente o conteúdo de uma string HTML para o formato PDF. Vamos analisar o processo passo a passo de conversão de páginas HTML para PDF em C++ usando a biblioteca wkhtmltopdf.

Pré-requisitos

Para criar um conversor de arquivos HTML para PDF em C++, certifique-se de que os seguintes pré-requisitos sejam atendidos:

  1. Um compilador C++, como o GCC ou o Clang, instalado em seu sistema.
  2. Biblioteca wkhtmltopdf 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++.

Crie um projeto C++ HtmltoPdf no Code::Blocks

Para criar um projeto de conversão de PDF em C++ no Code::Blocks, siga estes passos:

  1. Abra o ambiente de desenvolvimento integrado (IDE) Code::Blocks.
  2. Vá ao menu "Arquivo", selecione "Novo" e, em seguida, "Projeto" para abrir o assistente de Novo Projeto.
  3. No assistente Novo Projeto, selecione "Aplicativo de Console".
  4. Selecione a linguagem C++.
  5. Defina o título do projeto e o local onde deseja salvá-lo. Clique em "Avançar" para prosseguir.
  6. Selecione o compilador C++ e o alvo de compilação apropriados, como Debug ou Release. Clique em "Concluir" para criar o projeto.

Configurando diretórios de pesquisa

Para garantir que o Code::Blocks encontre 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 converter HTML para PDF em C++: Figura 1 - Diretórios de pesquisa

Interligando as Bibliotecas

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

  1. Clique novamente 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 converter HTML para PDF em C++: Figura 2 - Vinculação de bibliotecas

Passos para converter facilmente HTML em PDF em C++

Passo 1: Incluindo a biblioteca para converter arquivos HTML

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

#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
#include <iostream>
#include <fstream>
#include <string>
#include <wkhtmltox/pdf.h>
C++

Etapa 2: Inicializando o conversor

Para converter HTML em PDF, precisamos inicializar o conversor wkhtmltopdf. O código é o seguinte:

// Initialize the wkhtmltopdf library
wkhtmltopdf_init(false);

// Create global settings object
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();

// Create object settings object
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();

// Create the PDF converter with global settings
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
// Initialize the wkhtmltopdf library
wkhtmltopdf_init(false);

// Create global settings object
wkhtmltopdf_global_settings* gs = wkhtmltopdf_create_global_settings();

// Create object settings object
wkhtmltopdf_object_settings* os = wkhtmltopdf_create_object_settings();

// Create the PDF converter with global settings
wkhtmltopdf_converter* converter = wkhtmltopdf_create_converter(gs);
C++

Etapa 3: Configurando o conteúdo HTML

Agora, vamos fornecer o conteúdo HTML que precisa ser convertido em PDF. Você pode carregar um arquivo HTML ou fornecer a string diretamente.

std::string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";

// Add the HTML content to the converter
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
std::string htmlString = "<html><body><h1>Hello, World!</h1></body></html>";

// Add the HTML content to the converter
wkhtmltopdf_add_object(converter, os, htmlString.c_str());
C++

Etapa 4: Converter HTML para PDF

Com o conversor e o conteúdo HTML prontos, podemos prosseguir com a conversão do HTML para um arquivo PDF. Utilize o seguinte trecho de código:

// Perform the actual conversion
if (!wkhtmltopdf_convert(converter)) {
    std::cerr << "Conversion failed!" << std::endl;
}
// Perform the actual conversion
if (!wkhtmltopdf_convert(converter)) {
    std::cerr << "Conversion failed!" << std::endl;
}
C++

Etapa 5: Obtendo a saída como buffer de memória

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

// Retrieve the PDF data in memory buffer
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
// Retrieve the PDF data in memory buffer
const unsigned char* pdfData;
int pdfLength = wkhtmltopdf_get_output(converter, &pdfData);
C++

Passo 6: Salvando o arquivo PDF

Após a conversão ser concluída, precisamos salvar o arquivo PDF gerado no disco. Especifique o caminho do arquivo onde deseja salvar o PDF. Em seguida, usando um fluxo de arquivo de saída, abra o arquivo em modo binário e escreva os dados do PDF nele. Por fim, feche o arquivo:

const char* outputPath = "file.pdf";
std::ofstream outputFile(outputPath, std::ios::binary);

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

// Write the PDF data to the file
outputFile.write(reinterpret_cast<const char*>(pdfData), pdfLength);
outputFile.close();
C++

Etapa 7: Limpeza

Após converter HTML para PDF, é essencial limpar os recursos alocados pelo wkhtmltopdf:

// Clean up the converter and settings
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);

// Deinitialize the wkhtmltopdf library
wkhtmltopdf_deinit();

std::cout << "PDF saved successfully." << std::endl;
// Clean up the converter and settings
wkhtmltopdf_destroy_converter(converter);
wkhtmltopdf_destroy_object_settings(os);
wkhtmltopdf_destroy_global_settings(gs);

// Deinitialize the wkhtmltopdf library
wkhtmltopdf_deinit();

std::cout << "PDF saved successfully." << std::endl;
C++

Etapa 8: 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 converter HTML para PDF em C++: Figura 3 - Saída em PDF

HTML File to PDF File in C

IronPDF

A biblioteca IronPDF HTML-to-PDF Conversion Library é uma biblioteca robusta for .NET e .NET Core C# que permite aos desenvolvedores gerar documentos PDF a partir de conteúdo HTML sem esforço. Ela oferece uma API simples e intuitiva que facilita o processo de conversão de páginas web HTML para PDF, tornando-a uma escolha popular para diversas aplicações e casos de uso.

Uma das principais vantagens do IronPDF é a sua versatilidade. Ele suporta não apenas a conversão de documentos HTML simples, mas também de páginas 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 converter uma string HTML em PDF usando o IronPDF em C#:

using IronPdf;

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

// Create PDF content 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 PDF content 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 PDF content 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

O arquivo PDF gerado:

Como converter HTML para PDF em C++: Figura 4 - Saída do IronPDF

Para obter mais detalhes sobre como converter diferentes arquivos HTML, URLs de páginas da web e imagens em PDF, visite este exemplo de código HTML para PDF .

Com o IronPDF, gerar arquivos PDF a partir de conteúdo HTML torna-se uma tarefa simples em linguagens do .NET Framework . Sua API intuitiva e seu extenso conjunto de recursos a tornam uma ferramenta valiosa para desenvolvedores que precisam converter HTML em 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 da funcionalidade completa do IronPDF para uso comercial, permitindo que você experimente todas as suas funcionalidades. Você pode baixar o software em Download IronPDF .

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