Przejdź do treści stopki
NARZęDZIA PDF

Jak zapisać PDF jako plik obraz

Możliwość konwersji plików HTML lub treści na strony PDF jest cenną funkcją w wielu aplikacjach. W języku C++ tworzenie od podstaw aplikacji do generowania plików w formacie HTML lub PDF może być dość żmudne. W tym artykułe omówimy, jak przekonwertować HTML na PDF w języku C++ przy użyciu biblioteki wkhtmltopdf.

biblioteka wkhtmltopdf

wkhtmltopdf to narzędzie typu open source działające z wiersza poleceń, które płynnie przekształca strony HTML zawierające zwykły tekst w wysokiej jakości dokumenty PDF. Wykorzystując jego funkcje w programach napisanych w języku C++, możemy łatwo konwertować treści w postaci ciągów znaków HTML do formatu PDF. Przyjrzyjmy się krok po kroku procesowi konwersji strony HTML do formatu PDF w języku C++ przy użyciu biblioteki wkhtmltopdf.

Wymagania wstępne

Aby stworzyć konwerter plików HTML na PDF w języku C++, upewnij się, że spełnione są następujące warunki wstępne:

  1. Kompilator C++, taki jak GCC lub Clang, zainstalowany w systemie.
  2. Zainstalowana biblioteka wkhtmltopdf. Najnowszą wersję można pobrać z oficjalnej strony internetowej wkhtmltopdf i zainstalować zgodnie z instrukcjami dla danego systemu operacyjnego.
  3. Podstawowa znajomość programowania w języku C++.

Utwórz projekt C++ HtmltoPdf w Code::Blocks

Aby utworzyć projekt konwersji plików PDF w języku C++ w Code::Blocks, wykonaj następujące czynności:

  1. Otwórz środowisko Code::Blocks IDE.
  2. Przejdź do menu "Plik", wybierz "Nowy", a następnie "Projekt", aby otworzyć kreatora nowego projektu.
  3. W kreatorze nowego projektu wybierz "Aplikacja konsolowa".
  4. Wybierz język C++.
  5. Ustal tytuł projektu i miejsce, w którym chcesz go zapisać. Kliknij "Dalej", aby kontynuować.
  6. Wybierz odpowiedni kompilator C++ i cel kompilacji, np. Debug lub Release. Kliknij "Zakończ", aby utworzyć projekt.

Konfiguracja Katalogów Wyszukiwania

Aby upewnić się, że Code::Blocks może znaleźć niezbędne pliki nagłówkowe, musimy skonfigurować katalogi wyszukiwania:

  1. Kliknij menu "Projekt" na pasku menu i wybierz "Opcje kompilacji". Pamiętaj, aby wybrać opcję "Debug".
  2. W oknie dialogowym "Opcje kompilacji" wybierz kartę "Katalogi wyszukiwania".
  3. W zakładce "Kompilator" kliknij przycisk "Dodaj".
  4. Przejdź do katalogu, w którym znajdują się pliki nagłówkowe wkhtmltox (np. C:\Program Files\wkhtmltopdf\include>), i wybierz go.
  5. Na koniec kliknij "OK", aby zamknąć okno dialogowe.

Jak przekonwertować HTML na PDF w C++: Rysunek 1 - Katalogi wyszukiwania

Linkowanie bibliotek

Aby połączyć z biblioteką wkhtmltox, wykonaj te kroki:

  1. Ponownie kliknij menu "Projekt" na pasku menu i wybierz opcje budowania. Pamiętaj, aby wybrać opcję "Debug".
  2. W oknie dialogowym "Opcje kompilacji" wybierz zakładkę "Ustawienia linkera".
  3. W zakładce "Połącz biblioteki" kliknij przycisk "Dodaj".
  4. Przeglądaj katalog, w którym znajdują się pliki biblioteki wkhtmltox (np. C:\Program Files\wkhtmltopdf\lib), i wybierz odpowiedni plik biblioteki.
  5. Kliknij "Otwórz", aby dodać bibliotekę do swojego projektu.
  6. Na koniec kliknij "OK", aby zamknąć okno dialogowe.

Jak przekonwertować HTML na PDF w C++: Rysunek 2 - Łączenie bibliotek

Kroki do łatwego przekształcania HTML w PDF w C++

Krok 1: Dołączenie biblioteki do konwersji plików HTML

Aby rozpocząć, dołącz niezbędne pliki nagłówkowe, aby wykorzystać funkcjonalności biblioteki wkhtmltopdf w swoim programie C++. Dołącz następujące pliki nagłówkowe na początku pliku kodu źródłowego main.cpp, jak pokazano w poniższym przykładzie:

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

Krok 2: Inicjalizacja konwertera

Aby przekształcić HTML na PDF, musimy zainicjować konwerter wkhtmltopdf. Kod wygląda następująco:

// 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++

Krok 3: Ustawianie treści HTML

Teraz podajmy treść HTML, którą należy przekształcić na PDF. Możesz załadować plik HTML lub podać ciąg bezpośrednio.

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++

Krok 4: Konwersja HTML do PDF

Po przygotowaniu konwertera i treści HTML możemy przystąpić do przekształcenia HTML na plik PDF. Użyj następującego fragmentu kodu:

// 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++

Krok 5: Uzyskanie wyniku w formie bufora pamięci

Za pomocą funkcji wkhtmltopdf_get_output możemy uzyskać istniejące dane PDF jako strumień bufora pamięci. Zwraca również długość PDFa. Oto przykładowe zadanie:

// 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++

Krok 6: Zapisanie pliku PDF

Gdy konwersja zostanie zakończona, musimy zapisać wygenerowany plik PDF na dysku. Określ ścieżkę pliku, gdzie chcesz zapisać PDF. Następnie, używając strumienia plików wyjściowych, otwórz plik w trybie binarnym i zapisz do niego pdfData. Na koniec zamknij plik:

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++

Krok 7: Czyszczenie

Po przekształceniu HTML na PDF, istotne jest, aby oczyścić zasoby przydzielone przez 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++

Krok 8: Wykonaj kod i wygeneruj plik PDF

Teraz, skompiluj projekt i wykonaj kod używając F9. Wynik jest generowany i zapisany w folderze projektu. Wynikowy PDF wygląda następująco:

Jak przekonwertować HTML na PDF w C++: Rysunek 3 - Wyjście PDF

HTML File to PDF File in C

IronPDF

Biblioteka Konwersji HTML do PDF IronPDF to solidna biblioteka .NET i .NET Core w C#, która pozwala deweloperom na łatwe generowanie dokumentów PDF z treści HTML. Oferuje prosty i intuicyjny API, które upraszcza proces konwersji stron internetowych HTML na PDF, co czyni go popularnym wyborem dla różnych zastosowań i przypadków użycia.

Jedną z kluczowych zalet IronPDF jest jego wszechstronność. Obsługuje nie tylko konwersję prostych dokumentów HTML, ale także złożonych stron internetowych z stylami CSS, interakcjami JavaScript i nawet dynamiczną zawartością. Ponadto można opracować różne konwertery PDF z szybkim dostępem do metod konwersji.

Oto przykład kodu, który pokazuje, jak przekształcić Ciąg HTML na PDF przy użyciu IronPDF w 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

Wynik PDF:

Jak przekonwertować HTML na PDF w C++: Rysunek 4 - Wyjście IronPDF

Aby uzyskać więcej szczegółów na temat tego, jak konwertować różne pliki HTML, adresy URL stron internetowych i obrazy do PDF, odwiedź tę stronę Przykłady kodów HTML na PDF.

Z IronPDF, generowanie plików PDF z zawartości HTML staje się prostym zadaniem w językach .NET Framework. Jego intuicyjny API i rozbudowany zestaw funkcji czynią go wartościowym narzędziem dla deweloperów potrzebujących konwertować HTML na PDF w swoich projektach C#. Niezależnie od tego, czy to generowanie raportów, faktur, czy innego dokumentu wymagającego dokładnej konwersji HTML na PDF, IronPDF jest niezawodnym i efektywnym rozwiązaniem.

IronPDF jest darmowy do celów deweloperskich, ale do użytku komercyjnego wymaga licencji. Oferuje on także Bezpłatna wersja próbna pełnej funkcjonalności IronPDF do użytku komercyjnego, aby przetestować jego pełną funkcjonalność. Możesz pobrać oprogramowanie z Pobierz IronPDF.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie