Aspose.PDF FOSS for C++ الميزات

Aspose.PDF FOSS for C++ الميزات

Aspose.PDF FOSS for C++ الميزات

Aspose.PDF FOSS for C++ هي مكتبة C++20 لإنشاء وفتح وتعديل وحفظ مستندات PDF. تستعرض هذه الصفحة المجالات الرئيسية للقدرات والفئات التي تعمل كنقاط دخول لها. يتم تغطية كل مجال بعمق في صفحة دليل المطور الخاصة به.


إدارة المستندات

Aspose::Pdf::Document هو الكائن الجذري لكل عملية. يفتح ملفًا موجودًا من مسار، ويكشف مجموعة الصفحات عبر Pages()، ويحفظ التغييرات باستخدام Save(). Optimize() وOptimizeResources() يقللان من حجم الملف بإزالة الموارد غير المستخدمة أو المكررة.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    auto& pages = doc.Pages();
    pages.Add();                 // append a blank page
    pages.Delete(1);             // remove the original first page

    doc.Optimize();
    doc.Save("output.pdf");
}

استخراج النص

Aspose::Pdf::Text::TextAbsorber يتجول في مستند أو صفحة واحدة ويجمع النص العادي، والذي يتم استرجاعه باستخدام Text() بعد استدعاء Visit(). TextFragmentAbsorber يقوم بنفس العملية ولكنه يُعيد كائنات TextFragment منفردة عبر TextFragments()، مما يتيح الوصول إلى موضع كل قطعة وحالة النص.

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

int main() {
    Aspose::Pdf::Document doc("report.pdf");

    Aspose::Pdf::Text::TextAbsorber absorber;
    absorber.Visit(doc);

    std::cout << absorber.Text() << "\n";
}

التصيير إلى صور نقطية

الأجهزة التي تُظهر الصفحات تحول Page إلى صورة نقطية. BmpDevice، PngDevice، JpegDevice وTiffDevice يشاركون نفس توقيع Process(page, output) ويتم بناؤهم باستخدام Resolution الذي يحدد DPI الناتج.

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

int main() {
    Aspose::Pdf::Document doc("report.pdf");

    Aspose::Pdf::Devices::BmpDevice device(Aspose::Pdf::Devices::Resolution(150));
    std::ofstream out("page1.bmp", std::ios::binary);
    device.Process(doc.Pages()[1], out);
}

التشفير

Document::Encrypt() يحمي مستندًا بكلمة مرور للمستخدم (ضرورية لفتحه) وكلمة مرور للمالك (ضرورية لتغيير الأذونات)، باستخدام خوارزمية مختارة من تعداد CryptoAlgorithm: RC4x40، RC4x128، AESx128 أو AESx256. IsEncrypted() يوضح الحالة الحالية وDecrypt() يزيل الحماية من مستند مفتوح بالفعل.

#include <aspose/pdf/document.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");

    doc.Encrypt("user-password", "owner-password",
                Aspose::Pdf::Permissions::PrintDocument,
                Aspose::Pdf::CryptoAlgorithm::AESx256);

    doc.Save("encrypted.pdf");
}

التعليقات التوضيحية

التعليقات التوضيحية تُرفق ملاحظات مرئية وأشكال وعلامات تنسيق إلى صفحة. كل نوع من التعليقات التوضيحية يُشتق من Annotation ويُبنى باستخدام الهدف Page وRectangle للموقع، ثم يُضاف إلى الصفحة عبر التعليقات التوضيحية() (وهو AnnotationCollection).

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_annotation.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Annotations::TextAnnotation note(
        page, Aspose::Pdf::Rectangle(50.0, 700.0, 250.0, 740.0, false));
    note.Contents("Reviewed and approved.");

    page.Annotations().Add(note);
    doc.Save("annotated.pdf");
}

Forms

حقول AcroForm تُدار عبر Aspose::Pdf::Forms::Form، ويمكن الوصول إليها عبر Document::Form(). أنواع الحقول مثل TextBoxField تُبنى مثل التعليقات التوضيحية — باستخدام Page وRectangle — وتُسجل لدى Form::Add().

#include <aspose/pdf/document.hpp>
#include <aspose/pdf/text_box_field.hpp>
#include <aspose/pdf/rectangle.hpp>

int main() {
    Aspose::Pdf::Document doc("input.pdf");
    auto page = doc.Pages()[1];

    Aspose::Pdf::Forms::TextBoxField field(
        page, Aspose::Pdf::Rectangle(100.0, 650.0, 300.0, 670.0, false));
    field.PartialName("customer_name");
    field.Value("Jane Doe");

    doc.Form().Add(field);
    doc.Save("form_filled.pdf");
}

نصائح وأفضل الممارسات

  • افتح ملفات الإدخال عن طريق المسار باستخدام مُنشئ Document؛ استدعِ Save() بمسار إخراج صريح بدلاً من الكتابة فوق المصدر بينما قد تظل مؤشرات أخرى مفتوحة إليه.
  • استدعِ Optimize() قبل Save() عندما يكون المستند مُعدلًا بشكل كبير — فإنه يزيل الموارد التي لم تعد مُشارًا إليها من قبل أي صفحة.
  • أنشئ أجهزة الرستر (BmpDevice, PngDevice, JpegDevice, TiffDevice) مرة واحدة لكل دقة وأعد استخدامها عبر الصفحات بدلاً من إنشاء جهاز جديد لكل صفحة.
  • عيّن كلًا من كلمة مرور المستخدم وكلمة مرور المالك عند استدعاء Encrypt() — كلمة مرور المستخدم الفارغة تسمح لأي عارض بفتح الملف، بينما كلمة مرور المالك تتحكم في تغييرات الأذونات.
  • احافظ على بقاء كائنات التعليقات الحاشية والحقول (TextAnnotation, TextBoxField، وما شابه) نشطة حتى بعد عودة Save()، لأن المستند يحتفظ بمراجع إلى محتوى الصفحة التي أضيفت إليها.

مشكلات شائعة

المشكلةالسببالإصلاح
Save() ينتج ملفًا بمحتوى غير متغيرتم إجراء تعديلات على نسخة صفحة أو تعليق بدلاً من الكائن المستخرج من doc.Pages()عدّل الكائن الذي يُعيد مباشرةً Pages() أو Annotations() أو Form()
الصورة المرسومة فارغة أو خاليةتم تمرير فهرس صفحة غير صحيح إلى Process()PageCollection مُفهرَس من 1 — الصفحة 1 هي doc.Pages()[1]، ليست [0]
Encrypt() ينتج ملفًا ما زال يفتح دون كلمة مروركلمة مرور المستخدم تركت فارغةمرّر سلسلة غير فارغة كوسيط userPassword
النص المستخرج فارغ لملف PDF ممسوح ضوئيًاالصفحة تحتوي فقط على محتوى صورة نقطية، لا على مشغلات نصيةTextAbsorber يقرأ مشغلات النص؛ الصفحات التي تحتوي على صور فقط لا تحتوي على أي مشغلات لاستخراجها
الحقل المضاف باستخدام Form::Add() لا يظهر على الصفحةحقل Rectangle يقع خارج MediaBox الصفحةتأكد من أن إحداثيات المستطيل داخل حدود Page::MediaBox()

FAQ

هل يعتمد Aspose.PDF FOSS للغة C++ على أي مكتبة PDF تجارية؟

لا. إنها تنفيذ من الصفر باستخدام C++20 دون أي اعتماد على أي حزمة PDF تجارية، ومُصدرة تحت رخصة MIT.

هل يمكنني إنشاء ملف PDF جديد من الصفر بدلاً من فتح ملف موجود؟

نعم. Document يحتوي على مُنشئ افتراضي ينشئ مستندًا فارغًا؛ استدعِ Pages().Add() لإضافة صفحات قبل الحفظ.

ما هي صيغ الرسومات النقطية التي يمكنني التصدير إليها؟

BmpDevice، PngDevice، JpegDevice، وTiffDevice تُصدِّر الصفحات الفردية إلى BMP وPNG وJPEG وTIFF على التوالي.

ما خوارزميات التشفير المدعومة؟

CryptoAlgorithm يوفر RC4x40 وRC4x128 وAESx128 وAESx256، تُمرَّر إلى Document::Encrypt().

إلى أين أتوجه بعد ذلك؟

دليل المطور يتضمن صفحات مخصصة لإدارة المستندات والصفحات، والرسومات والأشكال PDF-native، والتعليقات التوضيحية والنماذج التفاعلية، وفئات الواجهة العليا التي تغلف عمليات الملفات الشائعة.


API Reference ملخص

الفئة/الطريقةوصف
Documentالكائن الجذري — فتح، إنشاء، حفظ، وتحسين ملف PDF
Document.Pages()يرجع PageCollection الخاص بالمستند
Document.Encrypt() / Decrypt()حماية كلمة المرور أو إزالة الحماية من المستند
Document.Form()يرجع حاوية AcroForm الخاصة بالمستند
TextAbsorberيستخرج النص العادي من مستند أو صفحة
TextFragmentAbsorberيستخرج أجزاء النص المتموضع
BmpDevice / PngDevice / JpegDevice / TiffDeviceتصيير صفحة إلى تنسيق صورة نقطية
Resolutionإخراج DPI الممرّر إلى جهاز التصيير
CryptoAlgorithmاختيار خوارزمية التشفير: RC4 أو AES، 40–256 بت
Permissionsعلامات التحكم في الوصول المرسلة إلى Encrypt()
Annotation / AnnotationCollectionالنوع الأساسي والحاوية لتعليقات الصفحة
TextAnnotationتعليق نصي
Formحاوية الحقل AcroForm تم الوصول إليها عبر Document.Form()
TextBoxFieldحقل نموذج نصي سطر واحد/متعدد الأسطر

انظر أيضاً

 العربية