Aspose.PDF FOSS for C++ یک کتابخانه متنباز و مدرن C++20 برای کار با اسناد PDF است — باز کردن و ذخیرهسازی PDFها، استخراج متن، رستر کردن صفحات به فرمتهای تصویری، و ساخت اسناد از ابتدا (متن، تصاویر، جدولها، گرافیکهای برداری، حاشیهنویسیها، فیلدهای AcroForm و نشانکها).
هسته API حول کلاس Document و مجموعه Pages() آن ساخته شده است. متن با Aspose::Pdf::Text::TextAbsorber استخراج میشود، صفحات با کلاسهای دستگاهی مانند PngDevice، JpegDevice، BmpDevice و TiffDevice به تصاویر رستر تبدیل میشوند، و اسناد میتوانند با Document.Encrypt() با استفاده از الگوریتمهای RC4-40، RC4-128، AES-128 یا AES-256 که از طریق enum CryptoAlgorithm انتخاب میشوند، امن شوند. فیلدهای فرم تعاملی از طریق کلاس Form مدیریت میشوند، و حاشیهنویسیها — یادداشتهای متنی، هایلایتها، اشکال و مهرها — از طریق سلسله مراتب کلاس Annotation اضافه و اصلاح میشوند.
Aspose.PDF FOSS for C++ تحت مجوز MIT منتشر شده است و هیچ هزینهٔ زمان اجرا یا محدودیت استفادهای ندارد. این کتابخانه بهصورت یک کتابخانهٔ ایستاتیک از طریق CMake ساخته میشود — آن را بهعنوان زیرپوشهای به ساخت خود اضافه کنید یا بهصورت مستقل نصب کنید — و به یک کامپایلر C++20 بدون وابستگیهای زمان اجرا دیگر نیاز دارد. برای ویژگیها و پشتیبانی سازمانی، ببینید 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() با استفاده از رمز عبور کاربر و مالک رمزگذاری کنیدCryptoAlgorithm، RC4-40، RC4-128، AES-128 یا AES-256 را انتخاب کنیدPermissions کنترل کنیدDocument.Decrypt() رمزگشایی کنیدAnnotation و AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()کتابخانه را بهعنوان یک زیرپوشه CMake اضافه کنید، سپس یک سند را باز کنید، تعداد صفحات آن را شمارش کنید، متن را با TextAbsorber استخراج کنید و صفحه ۱ را با وضوح 150 DPI به صورت PNG رندر کنید.
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);
}
یک سند را باز کنید و آن را با رمز عبور کاربر و مالک، با استفاده از رمزنگاری 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");
}
خواندن ورودیهای موجود /Info و بهروزرسانی عنوان سند از طریق 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 است و برای استفاده در محصولات تجاری و غیرتجاری رایگان است، بدون کلید فعالسازی یا محدودیتهای فراخوانی API.
یک کامپایلر C++20 (clang 16+، gcc 13+، یا MSVC 2022 17.5+) و CMake 3.22 یا بالاتر. Python 3 فقط در زمان ساخت مورد نیاز است.
نه. این فقط به کتابخانه استاندارد C++ لینک میشود — در زمان اجرا نیازی به هیچ وابستگی شخص ثالثی برای PDF، تصویر یا فشردهسازی نیست.
این برنامه اسناد PDF بومی را میخواند و ذخیره میکند و صفحات رندر شده را به فرمتهای Bmp، Jpeg و Tiff، بهعلاوه متن ساده، صادر مینماید. محتویات SVG میتوانند وارد شوند.
Document.Encrypt() را با یک رمز عبور کاربر، یک رمز عبور مالک و یک CryptoAlgorithm (RC4x40، RC4x128، AESx128 یا AESx256) فراخوانی کنید.
بله — چند کمککنندهٔ بررسی نوع XmpValue (IsDateTime، IsField و مشابه) بهصورت استاب هستند که همیشه false برمیگردانند؛ به جای آن از IsString/IsInteger/IsDouble/IsArray استفاده کنید.