Aspose.PDF FOSS for C++ es una biblioteca de código abierto y moderna en C++20 para trabajar con documentos PDF — abrir y guardar PDFs, extraer texto, rasterizar páginas a formatos de imagen y crear documentos desde cero (texto, imágenes, tablas, gráficos vectoriales, anotaciones, campos AcroForm y marcadores). La biblioteca se enlaza solo con la biblioteca estándar de C++: cada primitivo, incluidos los códecs TIFF, JPEG y PNG y el rasterizador de páginas, está implementado desde cero sin dependencia de ningún stack PDF comercial.
El núcleo API se construye alrededor de la clase Document y su colección Pages(). El texto se extrae con Aspose::Pdf::Text::TextAbsorber, las páginas se renderizan a imágenes rasterizadas mediante clases de dispositivo como PngDevice, JpegDevice, BmpDevice y TiffDevice, y los documentos pueden asegurarse con Document.Encrypt() usando algoritmos RC4-40, RC4-128, AES-128 o AES-256 seleccionados a través del enum CryptoAlgorithm. Los campos de formulario interactivos se gestionan a través de la clase Form, y las anotaciones — notas de texto, resaltados, formas y sellos — se añaden y modifican mediante la jerarquía de clases Annotation.
Aspose.PDF FOSS for C++ se publica bajo la licencia MIT sin tarifas de tiempo de ejecución ni restricciones de uso. Se compila como una biblioteca estática mediante CMake — añádela como subdirectorio de tu compilación o instálala de forma independiente — y requiere un compilador C++20 sin otras dependencias en tiempo de ejecución. Para funciones empresariales y soporte, consulta 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() usando una contraseña de usuario y una de propietarioCryptoAlgorithmPermissionsDocument.Decrypt()Annotation y AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()Add the library as a CMake subdirectory, then open a document, count its pages, extract text with TextAbsorber, and render page 1 to PNG at 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);
}
Abra un documento y protégalo con una contraseña de usuario y de propietario usando cifrado 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");
}
Lea las entradas existentes de /Info y actualice el título del documento a través de 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");
}
Tiene licencia MIT y es gratuito para usar en productos comerciales y no comerciales, sin clave de activación ni límites de llamadas a API.
Un compilador C++20 (clang 16+, gcc 13+ o MSVC 2022 17.5+) y CMake 3.22 o posterior. Python 3 es necesario solo en tiempo de compilación.
No. Enlaza únicamente contra la biblioteca estándar de C++ — no se requiere ninguna dependencia de PDF, imagen o compresión de terceros en tiempo de ejecución.
Lee y guarda documentos PDF nativos, y exporta páginas renderizadas a Bmp, Jpeg y Tiff, además de texto plano. El contenido SVG puede importarse.
Llame a Document.Encrypt() con una contraseña de usuario, una contraseña de propietario y un CryptoAlgorithm (RC4x40, RC4x128, AESx128 o AESx256).
Sí — algunos ayudantes de verificación de tipo de XmpValue (IsDateTime, IsField y similares) son stubs que siempre devuelven false; use IsString/IsInteger/IsDouble/IsArray en su lugar.