Aspose.PDF FOSS for C++ är ett open-source, modernt C++20-bibliotek för att arbeta med PDF-dokument — öppna och spara PDF-filer, extrahera text, rasterisera sidor till bildformat och bygga dokument från grunden (text, bilder, tabeller, vektorgrafik, anteckningar, AcroForm-fält och bokmärken). Biblioteket länkar endast mot C++-standardbiblioteket: varje primitiv, inklusive TIFF-, JPEG- och PNG-codecs samt sidrasterisatorn, är implementerad från grunden utan beroende av någon kommersiell PDF-stack.
Kärnan API är byggd kring Document-klassen och dess Pages()-samling. Text extraheras med Aspose::Pdf::Text::TextAbsorber, sidor renderas till rasterbilder via enhetsklasser som PngDevice, JpegDevice, BmpDevice och TiffDevice, och dokument kan skyddas med Document.Encrypt() med RC4-40, RC4-128, AES-128 eller AES-256-algoritmer som väljs via enumen CryptoAlgorithm. Interaktiva formulärfält hanteras via Form-klassen, och anteckningar — textnoteringar, markeringar, former och stämplar — läggs till och modifieras via Annotation-klasshierarkin.
Aspose.PDF FOSS for C++ släpps under MIT-licensen utan runtime-avgifter eller användningsrestriktioner. Det byggs som ett statiskt bibliotek via CMake — lägg till det som en underkatalog i ditt bygge eller installera det fristående — och kräver en C++20-kompilator utan andra runtime-beroenden. För företagsfunktioner och support, se 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-klassen{Device}.Process()Document.Encrypt() med ett användar- och ägarlösenordCryptoAlgorithm-enumetPermissions-typenDocument.Decrypt()Annotation och AnnotationCollectionForm-klassenForm.Add()/Form.Delete()Form.Flatten()Lägg till biblioteket som en CMake-undermapp, öppna sedan ett dokument, räkna dess sidor, extrahera text med TextAbsorber och rendera sida 1 till PNG med 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);
}
Öppna ett dokument och skydda det med ett användar- och ägarlösenord med AES-256-kryptering.
#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");
}
Läs befintliga /Info-poster och uppdatera dokumenttiteln via 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");
}
Den är MIT-licensierad och fri att använda i kommersiella och icke-kommersiella produkter, utan någon aktiveringsnyckel eller API anropsgränser.
En C++20-kompilator (clang 16+, gcc 13+ eller MSVC 2022 17.5+) och CMake 3.22 eller senare. Python 3 krävs endast vid byggetiden.
Nej. Den länkar bara mot C++ standardbiblioteket — ingen tredjeparts-PDF, bild eller komprimeringsberoende krävs vid körning.
Den läser och sparar inhemska PDF-dokument, och exporterar renderade sidor till Bmp, Jpeg och Tiff, samt vanlig text. SVG-innehåll kan importeras.
Anropa Document.Encrypt() med ett användarlösenord, ett ägarlösenord och en CryptoAlgorithm (RC4x40, RC4x128, AESx128 eller AESx256).
Ja — några XmpValue-typkontrolleringshjälpare (IsDateTime, IsField och liknande) är stubbar som alltid returnerar false; använd IsString/IsInteger/IsDouble/IsArray istället.