Aspose.PDF FOSS for C++ هي مكتبة مفتوحة المصدر، حديثة تعتمد على C++20 للعمل مع مستندات PDF — فتح وحفظ ملفات PDF، استخراج النص، تحويل الصفحات إلى صيغ صور، وبناء المستندات من الصفر (نص، صور، جداول، رسومات متجهة، تعليقات توضيحية، حقول AcroForm، وإشارات مرجعية). تربط المكتبة نفسها فقط بمكتبة C++ القياسية: كل عنصر بدائي، بما في ذلك مشفّرات TIFF و JPEG و PNG ومُحوّل الصفحات إلى رستر، مُنفّذ من الصفر دون الاعتماد على أي حزمة PDF تجارية.
النواة API مبنية حول فئة Document ومجموعة Pages(). يتم استخراج النص باستخدام Aspose::Pdf::Text::TextAbsorber، وتُرسم الصفحات إلى صور رستر عبر فئات الأجهزة مثل PngDevice و JpegDevice و BmpDevice و TiffDevice، ويمكن تأمين المستندات باستخدام Document.Encrypt() بخوارزميات RC4-40 أو RC4-128 أو AES-128 أو AES-256 المختارة من خلال تعداد 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() باستخدام كلمة مرور المستخدم والمالكCryptoAlgorithmPermissionsDocument.Decrypt()Annotation و AnnotationCollectionFormForm.Add()/Form.Delete()Form.Flatten()أضف المكتبة كدليل فرعي في CMake، ثم افتح مستندًا، احسب عدد صفحاته، استخرج النص باستخدام TextAbsorber، وقم بتصيير الصفحة 1 إلى PNG بدقة 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);
}
افتح مستندًا وحمّهه بكلمة مرور مستخدم وكلمة مرور مالك باستخدام تشفير 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() باستخدام كلمة مرور المستخدم، كلمة مرور المالك، وخوارزمية تشفير (RC4x40، RC4x128، AESx128، أو AESx256).
نعم — بعض المساعدين للتحقق من نوع XmpValue (IsDateTime, IsField, وما إلى ذلك) هي دوال نائبة تُعيد دائمًا false؛ استخدم IsString/IsInteger/IsDouble/IsArray بدلاً من ذلك.