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.
DocumentDocument.Pages() (PageCollection)PageCollection.Add()/Insert()/Delete()DocumentInfo (Document.Info())Document.Optimize()/OptimizeResources()Aspose::Pdf::Text::TextAbsorberTextAbsorber.Visit()TextAbsorber.Text()TextFragmentAbsorber.TextFragments()PngDeviceJpegDevice, BmpDevice, TiffDeviceResolution{Device}.Process()Document.Encrypt() używając hasła użytkownika i właścicielaCryptoAlgorithmPermissionsDocument.Decrypt()Annotation i AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()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);
}
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");
}
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");
}
Jest licencjonowany na licencji MIT i darmowy do użycia w produktach komercyjnych i niekomercyjnych, bez klucza aktywacji ani limitów wywołań API.
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.
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.
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.
Wywołaj Document.Encrypt() z hasłem użytkownika, hasłem właściciela i CryptoAlgorithm (RC4x40, RC4x128, AESx128 lub AESx256).
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.