Aspose.PDF FOSS for C++ — это открытая, современная библиотека C++20 для работы с PDF-документами: открытие и сохранение PDF, извлечение текста, растрирование страниц в графические форматы и создание документов с нуля (текст, изображения, таблицы, векторная графика, аннотации, поля AcroForm и закладки). Библиотека связывается только со стандартной библиотекой C++: каждый примитив, включая кодеки TIFF, JPEG и PNG и растрировщик страниц, реализован с нуля без зависимости от какого-либо коммерческого PDF-стека.
Ядро API построено вокруг класса Document и его коллекции Pages(). Текст извлекается с помощью Aspose::Pdf::Text::TextAbsorber, страницы рендерятся в растровые изображения через классы-устройства, такие как PngDevice, JpegDevice, BmpDevice и TiffDevice, а документы можно защищать с помощью Document.Encrypt() используя алгоритмы RC4-40, RC4-128, AES-128 или AES-256, выбранные через перечисление CryptoAlgorithm. Интерактивные поля формы управляются классом Form, а аннотации — текстовые заметки, выделения, фигуры и штампы — добавляются и изменяются через иерархию классов Annotation.
Aspose.PDF FOSS for C++ выпускается под лицензией MIT без каких-либо плат за выполнение или ограничения использования. Он собирается как статическая библиотека через CMake — добавьте его как подкаталог вашего проекта или установите отдельно — и требует компилятора C++20 без дополнительных runtime-зависимостей. Для корпоративных функций и поддержки см. 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() с использованием пользовательского и владельческого пароляCryptoAlgorithmPermissionsDocument.Decrypt()Annotation и AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()Добавьте библиотеку как подкаталог CMake, затем откройте документ, посчитайте количество страниц, извлеките текст с помощью TextAbsorber и отрендерите страницу 1 в PNG с разрешением 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);
}
Откройте документ и защитите его паролем пользователя и паролем владельца, используя шифрование 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");
}
Прочитайте существующие записи /Info и обновите заголовок документа через 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");
}
Это лицензировано по MIT и бесплатно для использования в коммерческих и некоммерческих продуктах, без ключа активации или ограничений вызовов API.
Компилятор C++20 (clang 16+, gcc 13+ или MSVC 2022 17.5+) и CMake 3.22 или новее. Python 3 требуется только во время сборки.
Нет. Он связывается только со стандартной библиотекой C++ — во время выполнения не требуется зависимостей от сторонних PDF, изображений или сжатия.
Он читает и сохраняет оригинальные PDF-документы, а также экспортирует отрисованные страницы в Bmp, Jpeg и Tiff, плюс обычный текст. Содержимое SVG можно импортировать.
Вызовите Document.Encrypt() с паролем пользователя, паролем владельца и CryptoAlgorithm (RC4x40, RC4x128, AESx128 или AESx256).
Да — несколько вспомогательных функций проверки типа XmpValue (IsDateTime, IsField и аналогичных) являются заглушками, которые всегда возвращают false; используйте IsString/IsInteger/IsDouble/IsArray вместо этого.