الأسئلة المتكررة

الأسئلة المتكررة

ما هو نموذج الترخيص لـ Aspose.PDF FOSS for C++؟

Aspose.PDF FOSS for C++ مرخص برخصة MIT. يمكن استخدامه مجانًا في المنتجات التجارية وغير التجارية، دون الحاجة إلى مفتاح تفعيل أو حدود استدعاءات API أو اتفاقية تجارية.

كيف يمكنني إضافة Aspose.PDF FOSS for C++ إلى مشروع CMake؟

Vendor أو استنساخ المستودع داخل شجرة مشروعك، أضفه كدليل فرعي، وربط هدف المكتبة الثابتة:

add_subdirectory(aspose.pdf-foss-for-cpp)
target_link_libraries(your_app PRIVATE aspose_pdf_foss)

ما إصدارات المترجم وCMake المطلوبة؟

مترجم يدعم C++20 — clang 16+ أو gcc 13+ أو MSVC 2022 17.5+ — وCMake 3.22 أو أحدث. يتطلب البناء أيضًا Python 3 فقط أثناء وقت البناء، لتوليد المخططات الخطية Standard-14 المضمنة.

هل للمكتبة أي تبعيات وقت تشغيل؟

لا. Aspose.PDF FOSS للـ C++ يرتبط فقط بمكتبة C++ القياسية — لا توجد أية تبعية لملفات PDF أو صور أو ضغط من طرف ثالث مطلوبة أثناء التشغيل.

ما الصيغ التي يمكن لـ Aspose.PDF FOSS للـ C++ قراءتها وتصديرها؟

يفتح ويحفظ مستندات PDF الأصلية. يمكن تصدير الصفحات المرسومة إلى Bmp و Jpeg و Tiff عبر BmpDevice و JpegDevice و TiffDevice، وإلى نص عادي عبر TextDevice. يمكن استيراد محتوى SVG إلى مستند عبر SvgLoadOptions.

كيف يمكنني فتح ملف PDF موجود والتحقق من عدد صفحاته؟

#include <aspose/pdf/document.hpp>

Aspose::Pdf::Document doc("input.pdf");
std::size_t pages = doc.Pages().Count();

كيف يمكنني استخراج النص من مستند PDF؟

استخدم TextAbsorber، زر المستند، ثم اقرأ النص المُجمع:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_absorber.hpp>

Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Text::TextAbsorber absorber;
absorber.Visit(doc);
std::string text = absorber.Text();

كيف يمكنني تحويل صفحة PDF إلى صورة؟

استخدم فئة جهاز مثل PngDevice مع هدف Resolution، ثم عالج صفحة واحدة إلى تدفق إخراج:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/png_device.hpp>
#include <aspose/pdf/resolution.hpp>
#include <fstream>

Aspose::Pdf::Document doc("input.pdf");
Aspose::Pdf::Devices::PngDevice png(Aspose::Pdf::Devices::Resolution(150));
std::ofstream out("page1.png", std::ios::binary);
png.Process(doc.Pages()[1], out);

كيف يمكنني تشفير مستند PDF؟

استدعِ Document.Encrypt() باستخدام كلمة مرور للمستخدم، كلمة مرور للمالك، قيمة Permissions، وCryptoAlgorithm:

#include <aspose/pdf/document.hpp>

Aspose::Pdf::Document doc("input.pdf");
doc.Encrypt("user-password", "owner-password",
            Aspose::Pdf::Permissions(), Aspose::Pdf::CryptoAlgorithm::AESx256);
doc.Save("encrypted.pdf");

RC4x40، RC4x128، AESx128، وAESx256 كلها متاحة عبر تعداد CryptoAlgorithm. Document.Decrypt() يزيل التشفير من مستند مفتوح بالفعل.

كيف يمكنني قراءة أو تعبئة قيم الحقول AcroForm؟

تجول عبر Form.Fields() من المستند واقرأ أو اضبط قيمة كل حقل وفقًا لاسمه الجزئي:

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/forms/form.hpp>

Aspose::Pdf::Document doc("application_form.pdf");
auto& form = doc.Form();
for (auto* field : form.Fields()) {
    if (field->PartialName() == "applicant_name") {
        field->Value("Jane Doe");
    }
}
doc.Save("application_filled.pdf");

هل هناك أي قيود معروفة في الإصدار الحالي؟

نعم. XmpValue — نوع القيمة المستخدم لإدخالات بيانات XMP الوصفية التي تُرجع من Document.Metadata() — يكشف عن مساعدات فحص النوع IsDateTime()، IsField()، IsNamedValue()، IsRaw()، IsNamedValues()، وIsStructure() التي هي حالياً دُمى وتعيد دائماً false. الشيفرة التي تتفرع بناءً على هذه الفحوص لا يمكنها تمييز أنواع قيم XMP تلك. استخدم الفحوص المنفذة بدلاً من ذلك — IsString()، IsInteger()، IsDouble()، IsArray() — أو استدعِ الواجهة المطابقة (ToStringValue()، ToInteger()، ToDouble()، ToArray()) مباشرةً عندما يكون نوع القيمة معروفًا مسبقًا من السياق. عدد قليل من الأنواع الداخلية منخفضة المستوى يحتوي أيضًا على مُنشئات دُمية لا تُستَخدم في الشيفرة المعتادة لمعالجة المستندات.

أين الشيفرة المصدرية ومتابع المشكلات؟

الكود المصدري ومتعقب المشكلات متاحان على https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Cpp.

انظر أيضاً

 العربية