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 | حقل نموذج نصي سطر واحد/متعدد الأسطر |