Aspose.PDF FOSS for C++ je open-source, moderní knihovna C++20 pro práci s PDF dokumenty — otevírání a ukládání PDF, extrahování textu, rasterizaci stránek do obrazových formátů a vytváření dokumentů od nuly (text, obrázky, tabulky, vektorová grafika, anotace, pole AcroForm a záložky). Knihovna se váže pouze na standardní knihovnu C++: každý primitivní prvek, včetně kodeků TIFF, JPEG a PNG a rasterizátoru stránek, je implementován od začátku bez závislosti na jakémkoli komerčním PDF stacku.
Jádro API je postaveno kolem třídy Document a její kolekce Pages(). Text se extrahuje pomocí Aspose::Pdf::Text::TextAbsorber, stránky se renderují do rastrových obrázků pomocí zařízení jako PngDevice, JpegDevice, BmpDevice a TiffDevice a dokumenty lze zabezpečit pomocí Document.Encrypt() s algoritmy RC4-40, RC4-128, AES-128 nebo AES-256, které se vybírají přes výčtový typ CryptoAlgorithm. Interaktivní formulářová pole jsou spravována třídou Form a anotace — textové poznámky, zvýraznění, tvary a razítka — se přidávají a upravují prostřednictvím hierarchie tříd Annotation.
Aspose.PDF FOSS for C++ je vydáno pod licencí MIT bez poplatků za běh ani omezení používání. Vytváří se jako statická knihovna pomocí CMake — přidejte ji jako podadresář vašeho buildu nebo ji nainstalujte samostatně — a vyžaduje kompilátor C++20 bez dalších runtime závislostí. Pro podnikové funkce a podporu navštivte 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() s uživatelským a vlastníckým heslemCryptoAlgorithmPermissionsDocument.Decrypt()Annotation a AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()Přidejte knihovnu jako podadresář CMake, poté otevřete dokument, spočítejte jeho stránky, extrahujte text pomocí TextAbsorber a vykreslete stránku 1 do PNG při 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);
}
Otevřete dokument a ochraňte jej uživatelským a vlastnickým heslem pomocí šifrování 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");
}
Přečtěte existující položky /Info a aktualizujte název dokumentu 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");
}
Je licencováno pod MIT a je zdarma k použití v komerčních i nekomerčních produktech, bez aktivačního klíče nebo omezení volání API.
Kompilátor C++20 (clang 16+, gcc 13+ nebo MSVC 2022 17.5+) a CMake 3.22 nebo novější. Python 3 je vyžadován pouze během sestavení.
Ne. Propojuje se pouze se standardní knihovnou C++ — není vyžadována žádná třetí strana PDF, obrázková ani kompresní závislost za běhu.
Čte a ukládá nativní PDF dokumenty a exportuje vykreslené stránky do Bmp, Jpeg a Tiff, plus prostý text. Obsah SVG lze importovat.
Zavolejte Document.Encrypt() s uživatelským heslem, heslem vlastníka a CryptoAlgorithm (RC4x40, RC4x128, AESx128 nebo AESx256).
Ano — několik pomocných funkcí pro kontrolu typu XmpValue (IsDateTime, IsField a podobně) jsou pouze zástupci, kteří vždy vrací false; místo nich použijte IsString/IsInteger/IsDouble/IsArray.