1. Produkty
  2.   Aspose.PDF
  3.   Aspose.PDF FOSS for C++

Aspose.PDF FOSS dla C++

Biblioteka open-source C++ do tworzenia, edytowania, renderowania i zabezpieczania dokumentów PDF bez zależności w czasie wykonywania.

Aspose.PDF FOSS — Biblioteka PDF w C++ typu Open Source

Aspose.PDF FOSS for C++ to otwartoźródłowa, nowoczesna biblioteka C++20 do pracy z dokumentami PDF — otwierania i zapisywania plików PDF, wyodrębniania tekstu, rastrowania stron do formatów obrazu oraz tworzenia dokumentów od podstaw (tekst, obrazy, tabele, grafika wektorowa, adnotacje, pola AcroForm i zakładki). Biblioteka wiąże się wyłącznie z biblioteką standardową C++: każdy element, w tym kodeki TIFF, JPEG i PNG oraz rastrowanie stron, jest implementowany od podstaw bez zależności od jakiegokolwiek komercyjnego stosu PDF.

Rdzeń API opiera się na klasie Document i jej kolekcji Pages(). Tekst jest wyodrębniany przy użyciu Aspose::Pdf::Text::TextAbsorber, strony są renderowane do obrazów rastrowych za pomocą klas urządzeń takich jak PngDevice, JpegDevice, BmpDevice i TiffDevice, a dokumenty mogą być zabezpieczane przy pomocy Document.Encrypt() z wykorzystaniem algorytmów RC4-40, RC4-128, AES-128 lub AES-256 wybranych z wyliczenia CryptoAlgorithm. Interaktywne pola formularzy są zarządzane przez klasę Form, a adnotacje — notatki tekstowe, podświetlenia, kształty i pieczątki — są dodawane i modyfikowane za pośrednictwem hierarchii klas Annotation.

Aspose.PDF FOSS for C++ jest udostępniany na licencji MIT bez opłat runtime ani ograniczeń użytkowania. Kompiluje się jako biblioteka statyczna przy użyciu CMake — dodaj go jako podkatalog swojego projektu lub zainstaluj samodzielnie — i wymaga kompilatora C++20 bez dodatkowych zależności runtime. Aby uzyskać funkcje i wsparcie dla przedsiębiorstw, zobacz Aspose.PDF for C++ — Enterprise Product.

Ładowanie dokumentu i zarządzanie stronami

  • Otwórz istniejące pliki PDF i zapisz modyfikacje przy użyciu Document
  • Uzyskaj dostęp i iteruj strony za pomocą Document.Pages() (PageCollection)
  • Dodawaj, wstawiaj i usuwaj strony przy użyciu PageCollection.Add()/Insert()/Delete()
  • Odczytuj i ustaw metadane dokumentu poprzez DocumentInfo (Document.Info())
  • Optymalizuj rozmiar dokumentu przy użyciu Document.Optimize()/OptimizeResources()

Typowe przypadki użycia

  • Tworzyć potoki generowania PDF dla raportów i faktur
  • Łączyć, dzielić i reorganizować istniejące dokumenty PDF
  • Programowo przeglądać i aktualizować metadane dokumentów
  • Zmniejszać rozmiar pliku PDF przed archiwizacją lub dystrybucją

Ekstrakcja tekstu

  • Wyodrębnić zwykły tekst z całego dokumentu za pomocą Aspose::Pdf::Text::TextAbsorber
  • Odwiedzić pojedynczą stronę lub cały dokument za pomocą TextAbsorber.Visit()
  • Pobrać wyodrębniony tekst poprzez TextAbsorber.Text()
  • Zlokalizować poszczególne fragmenty tekstu przy użyciu TextFragmentAbsorber.TextFragments()

Typowe przypadki użycia

  • Indeksować zawartość PDF do wyszukiwania
  • Wyodrębniać dane z faktur i dokumentów strukturalnych
  • Tworzyć potoki text-miningu lub analizy treści
  • Weryfikować zawartość dokumentu w automatycznych zestawach testowych

Renderowanie do obrazów rastrowych

  • Renderuj strony do formatu PNG za pomocą PngDevice
  • Renderuj strony do formatu JPEG, BMP lub TIFF za pomocą JpegDevice, BmpDevice, TiffDevice
  • Kontroluj rozdzielczość wyjściową przy pomocy klasy Resolution
  • Przetwarzaj pojedynczą stronę za pomocą {Device}.Process()

Typowe przypadki użycia

  • Generuj miniatury stron dla przeglądarki dokumentów
  • Twórz gotowe do druku wyjście rastrowe z wektorowych plików PDF
  • Buduj usługi konwersji PDF na obraz
  • Twórz bazowe obrazy regresji wizualnej dla wygenerowanych plików PDF

Szyfrowanie i bezpieczeństwo

  • Szyfruj dokumenty za pomocą Document.Encrypt() używając hasła użytkownika i właściciela
  • Wybierz RC4-40, RC4-128, AES-128 lub AES-256 za pośrednictwem wyliczenia CryptoAlgorithm
  • Kontroluj przyznane uprawnienia przy użyciu typu Permissions
  • Odszyfruj dokumenty chronione hasłem za pomocą Document.Decrypt()

Typowe przypadki użycia

  • Chroń poufne raporty PDF przed dystrybucją
  • Wymuś ograniczenia drukowania/kopiowania/edycji na udostępnionych dokumentach
  • Dodaj ochronę hasłem do generowanych faktur i wyciągów
  • Szyfruj dokumenty wsadowo jako część potoku dokumentów

Adnotacje i formularze interaktywne

  • Dodawaj, modyfikuj i spłaszczaj adnotacje za pomocą Annotation i AnnotationCollection
  • Zarządzaj polami AcroForm za pomocą klasy Form
  • Dodawaj i usuwaj pola przy użyciu Form.Add()/Form.Delete()
  • Spłaszcz interaktywne formularze do treści statycznej przy pomocy Form.Flatten()

Typowe przypadki użycia

  • Dodaj komentarze recenzji i podświetlenia do udostępnionych plików PDF
  • Twórz wypełnialne formularze PDF do zbierania danych
  • Spłaszcz przesłane formularze przed archiwizacją
  • Programowo wstępnie wypełniaj i blokuj pola formularza

Otwórz PDF, wyodrębnij tekst i renderuj stronę

Dodaj bibliotekę jako podkatalog CMake, a następnie otwórz dokument, policz jego strony, wyodrębnij tekst za pomocą TextAbsorber i wyrenderuj stronę 1 do PNG w rozdzielczości 150 DPI.

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)
#include <aspose/pdf/document.hpp>
#include <aspose/pdf/page_collection.hpp>
#include <aspose/pdf/text_absorber.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    std::cout << "Pages: " << doc.Pages().Count() << "\n";

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);
    std::cout << absorber.Text() << "\n";

    Aspose::Pdf::Devices::PngDevice png(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.png", std::ios::binary);
    png.Process(doc.Pages()[1], out);
}

Zaszyfruj dokument przy użyciu AES-256

Otwórz dokument i zabezpiecz go hasłem użytkownika oraz właściciela przy użyciu szyfrowania AES-256.

#include <aspose/pdf/document.hpp>
int main() {
    Aspose::Pdf::Document doc("input.pdf");
    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions(),
                Aspose::Pdf::CryptoAlgorithm::AESx256);
    doc.Save("encrypted.pdf");
}

Odczyt i aktualizacja metadanych dokumentu

Odczytaj istniejące wpisy /Info i zaktualizuj tytuł dokumentu za pomocą DocumentInfo.

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/document_info.hpp>
#include <iostream>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto& info = doc.Info();
    std::cout << "Title: " << info.Title() << "\n";
    std::cout << "Author: " << info.Author() << "\n";

    doc.SetTitle("Updated Report Title");
    doc.Save("output.pdf");
}

Najczęściej Zadawane Pytania

Jaki jest model licencjonowania dla Aspose.PDF FOSS for C++?

Jest licencjonowany na licencji MIT i darmowy do użycia w produktach komercyjnych i niekomercyjnych, bez klucza aktywacji ani limitów wywołań API.

Jakie wersje kompilatora i CMake są wymagane?

Komiler C++20 (clang 16+, gcc 13+ lub MSVC 2022 17.5+) oraz CMake 3.22 lub nowszy. Python 3 jest wymagany tylko w czasie budowania.

Czy biblioteka ma jakiekolwiek zależności w czasie wykonywania?

Nie. Łączy się wyłącznie z biblioteką standardową C++ — nie jest wymagana żadna zależność zewnętrzna PDF, obrazów ani kompresji w czasie wykonywania.

Jakie formaty może odczytywać i eksportować?

Odczytuje i zapisuje natywne dokumenty PDF oraz eksportuje renderowane strony do formatu Bmp, Jpeg i Tiff, a także jako zwykły tekst. Treść SVG może być importowana.

Jak zaszyfrować dokument PDF?

Wywołaj Document.Encrypt() z hasłem użytkownika, hasłem właściciela i CryptoAlgorithm (RC4x40, RC4x128, AESx128 lub AESx256).

Czy istnieją znane ograniczenia w bieżącej wersji?

Tak — kilka pomocników sprawdzających typ XmpValue (IsDateTime, IsField i podobne) to stuby, które zawsze zwracają false; użyj zamiast tego IsString/IsInteger/IsDouble/IsArray.

  

Zasoby Wsparcia i Nauki

 Polski