Aspose.PDF FOSS for C++ adalah perpustakaan C++20 sumber terbuka modern untuk bekerja dengan dokumen PDF — membuka dan menyimpan PDF, mengekstrak teks, meraster halaman ke format gambar, dan membangun dokumen dari awal (teks, gambar, tabel, grafik vektor, anotasi, bidang AcroForm, dan bookmark). Perpustakaan ini hanya terhubung dengan pustaka standar C++: setiap primitif, termasuk codec TIFF, JPEG, dan PNG serta rasteriser halaman, diimplementasikan dari awal tanpa ketergantungan pada stack PDF komersial.
Inti API dibangun di sekitar kelas Document dan koleksi Pages()-nya. Teks diekstrak dengan Aspose::Pdf::Text::TextAbsorber, halaman dirender ke gambar raster melalui kelas perangkat seperti PngDevice, JpegDevice, BmpDevice, dan TiffDevice, dan dokumen dapat diamankan dengan Document.Encrypt() menggunakan algoritma RC4-40, RC4-128, AES-128, atau AES-256 yang dipilih melalui enum CryptoAlgorithm. Bidang formulir interaktif dikelola melalui kelas Form, dan anotasi — catatan teks, sorotan, bentuk, dan cap — ditambahkan serta dimodifikasi melalui hirarki kelas Annotation.
Aspose.PDF FOSS for C++ dirilis di bawah lisensi MIT tanpa biaya runtime atau pembatasan penggunaan. Ia dibangun sebagai perpustakaan statis melalui CMake — tambahkan sebagai subdirektori dari build Anda atau instal secara mandiri — dan memerlukan kompilator C++20 tanpa dependensi runtime lainnya. Untuk fitur enterprise dan dukungan, lihat 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() menggunakan kata sandi pengguna dan pemilikCryptoAlgorithmPermissionsDocument.Decrypt()Annotation dan AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()Tambahkan perpustakaan sebagai subdirektori CMake, kemudian buka dokumen, hitung halamannya, ekstrak teks dengan TextAbsorber, dan render halaman 1 ke PNG pada 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);
}
Buka dokumen dan lindungi dengan kata sandi pengguna dan pemilik menggunakan enkripsi 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");
}
Baca entri /Info yang ada dan perbarui judul dokumen melalui 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");
}
Ini berlisensi MIT dan gratis digunakan dalam produk komersial maupun non-komersial, tanpa kunci aktivasi atau batas panggilan API.
Sebuah kompiler C++20 (clang 16+, gcc 13+, atau MSVC 2022 17.5+) dan CMake 3.22 atau yang lebih baru. Python 3 diperlukan hanya pada waktu build.
Tidak. Ini hanya terhubung dengan pustaka standar C++ — tidak ada ketergantungan pihak ketiga untuk PDF, gambar, atau kompresi yang diperlukan pada waktu berjalan.
Ia membaca dan menyimpan dokumen PDF asli, serta mengekspor halaman yang dirender ke Bmp, Jpeg, dan Tiff, plus teks biasa. Konten SVG dapat diimpor.
Panggil Document.Encrypt() dengan kata sandi pengguna, kata sandi pemilik, dan CryptoAlgorithm (RC4x40, RC4x128, AESx128, atau AESx256).
Ya — beberapa pembantu pemeriksaan tipe XmpValue (IsDateTime, IsField, dan serupa) adalah stub yang selalu mengembalikan false; gunakan IsString/IsInteger/IsDouble/IsArray sebagai gantinya.