Aspose.PDF FOSS for C++ é uma biblioteca moderna de C++20 de código aberto para trabalhar com documentos PDF — abrir e salvar PDFs, extrair texto, rasterizar páginas para formatos de imagem e criar documentos do zero (texto, imagens, tabelas, gráficos vetoriais, anotações, campos AcroForm e marcadores). A biblioteca vincula-se apenas à biblioteca padrão C++: cada primitivo, incluindo os codecs TIFF, JPEG e PNG e o rasterizador de página, é implementado do zero sem dependência de qualquer pilha PDF comercial.
O núcleo API é construído em torno da classe Document e sua coleção Pages(). O texto é extraído com Aspose::Pdf::Text::TextAbsorber, as páginas são renderizadas em imagens rasterizadas por meio de classes de dispositivo como PngDevice, JpegDevice, BmpDevice e TiffDevice, e os documentos podem ser protegidos com Document.Encrypt() usando os algoritmos RC4-40, RC4-128, AES-128 ou AES-256 selecionados através do enum CryptoAlgorithm. Os campos de formulário interativos são gerenciados pela classe Form, e as anotações — notas de texto, realces, formas e carimbos — são adicionadas e modificadas através da hierarquia de classes Annotation.
Aspose.PDF FOSS for C++ é lançado sob a licença MIT sem taxas de tempo de execução ou restrições de uso. Ele é compilado como uma biblioteca estática via CMake — adicione-o como um subdiretório da sua compilação ou instale-o de forma independente — e requer um compilador C++20 sem outras dependências em tempo de execução. Para recursos e suporte empresariais, veja 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 uma senha de usuário e de proprietárioCryptoAlgorithmPermissionsDocument.Decrypt()Annotation e AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()Adicione a biblioteca como um subdiretório CMake, então abra um documento, conte suas páginas, extraia o texto com TextAbsorber e renderize a página 1 para PNG a 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 um documento e proteja-o com uma senha de usuário e de proprietário usando criptografia 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");
}
Leia as entradas existentes de /Info e atualize o título do documento atravé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");
}
É MIT-licensed e gratuito para uso em produtos comerciais e não comerciais, sem chave de ativação ou limites de chamadas API.
Um compilador C++20 (clang 16+, gcc 13+ ou MSVC 2022 17.5+) e CMake 3.22 ou posterior. Python 3 é necessário apenas no tempo de compilação.
Não. Ele vincula apenas à biblioteca padrão do C++. — nenhuma dependência de PDF, imagem ou compressão de terceiros é necessária em tempo de execução.
Ele lê e salva documentos PDF nativos e exporta páginas renderizadas para Bmp, Jpeg e Tiff, além de texto simples. O conteúdo SVG pode ser importado.
Chame Document.Encrypt() com uma senha de usuário, uma senha de proprietário e um CryptoAlgorithm (RC4x40, RC4x128, AESx128 ou AESx256).
Sim — alguns auxiliares de verificação de tipo XmpValue (IsDateTime, IsField e semelhantes) são stubs que sempre retornam false; use IsString/IsInteger/IsDouble/IsArray em vez disso.