إدارة المستندات
إدارة المستندات
Document هو الكائن الجذر في Aspose.PDF FOSS لـ .NET. يمثل
ملف PDF كامل ويوفر الوصول إلى الصفحات والبيانات الوصفية وحقول النماذج، وجميع
هياكل PDF الأخرى. افتح الملفات الموجودة باستخدام Document.Open وأنشئ
ملفات جديدة باستخدام مُنشئ Document.
فتح وإنشاء المستندات
// Open from a byte array
using var doc = Document.Open(File.ReadAllBytes("input.pdf"));
// Open from a file path
using var doc2 = new Document("input.pdf");
// Create a new empty document
using var newDoc = new Document();
newDoc.Pages.Add();
newDoc.Save("new.pdf");العمل مع الصفحات
PageCollection يدير صفحات المستند. يمكن الوصول إلى الصفحات بواسطة فهرس يبدأ من 1، إضافة صفحات جديدة، أو إزالة الصفحات الموجودة.
using var doc = Document.Open(pdfBytes);
// Access first page
var page = doc.Pages[1];
// Add a blank page
var newPage = doc.Pages.Add();
// Get page count
int count = doc.Pages.Count;هندسة الصفحة
كل صفحة تُعرّف عدة صناديق حدودية. استخدم طرق الضبط على Page لتعديلها.
var page = doc.Pages[1];
page.SetMediaBox(new Rectangle(0, 0, 612, 792));
page.SetCropBox(new Rectangle(36, 36, 576, 756));
page.SetRotation(90);حفظ المستندات
احفظ إلى مسار ملف أو تدفق أو مصفوفة بايت.
// Save to file
doc.Save("output.pdf");
// Save to stream
using var ms = new MemoryStream();
doc.Save(ms);المرفقات
FileSpecification يمثل مرفقات الملفات المضمنة في ملف PDF.
var spec = new FileSpecification("data.csv", "Embedded data file");
doc.EmbeddedFiles.Add(spec);طوابع الصورة
ImageStamp يضع صورة نقطية على صفحة في موضع محدد.
var stamp = new ImageStamp("logo.png");
stamp.Put(doc.Pages[1]);
doc.Save("stamped.pdf");مجموعات المشغل
OperatorCollection على كل صفحة يحتوي على عوامل تشغيل تدفق المحتوى الخام. استخدمه لفحص المحتوى منخفض المستوى أو التلاعب به.
var ops = doc.Pages[1].Contents;
foreach (var op in ops)
{
// Inspect each operator
}نصائح وأفضل الممارسات
- قم بلف
Documentداخل بيانusingلإطلاق مقبضات الملفات على الفور. - استخدم
Document.Open(byte[])لتدفقات العمل في الذاكرة لتجنب مشكلات قفل الملفات. - عدّل صناديق الصفحة (MediaBox، CropBox) قبل إضافة المحتوى لضمان مساحة إحداثيات صحيحة.
- استدعِ
Saveمرة واحدة فقط بعد جميع التعديلات — عمليات الحفظ المتكررة أبطأ لكنها آمنة. - استخدم
PageCollection.Accept(AnnotationSelector)لمعالجة التعليقات التوضيحية على دفعات عبر جميع الصفحات.
مشكلات شائعة
| Issue | Cause | Fix |
|---|---|---|
Document.Open يطرح استثناءً على ملف PDF صالح | الملف مشفر بكلمة مرور | قم بتمرير معامل كلمة المرور في المُنشئ |
| عدد الصفحات 0 بعد الإنشاء | Document() الجديد يبدأ فارغًا | استدعِ doc.Pages.Add() لإضافة صفحة فارغة |
| الملف المحفوظ أكبر من المتوقع | الصور أو الخطوط مدمجة عدة مرات | استخدم التحسين (انظر دليل التحويل والتحسين) |
Pages[0] يطرح خطأ فهرس | الصفحات تبدأ من 1، وليس من 0 | استخدم Pages[1] للصفحة الأولى |
الأسئلة المتكررة
كيف يمكنني دمج مستندي PDF؟
استخدم PdfFileEditor.Concatenate من Facades API، أو انسخ الصفحات يدويًا من مستند إلى آخر باستخدام PageCollection.
هل يمكنني فتح ملف PDF من عنوان URL أو تدفق؟
نعم. اقرأ محتوى URL إلى byte[] أولاً، ثم مرره إلى
Document.Open(byte[]).
كيف أحذف صفحة؟
استدعِ doc.Pages.Delete(pageNumber) حيث pageNumber يبدأ من 1.
هل Document thread-safe؟
لا. يجب أن يعمل كل خيط مع مثاله الخاص Document.
ملخص مرجع API
| الفئة / الطريقة | الوصف |
|---|---|
Document | كائن PDF الجذر؛ يحتوي على الصفحات والبيانات الوصفية وحقول النموذج |
Document.Open | مصنع ثابت لفتح PDF من مصفوفة بايت |
Document.Save | تسلسل المستند إلى ملف أو تدفق |
Page | صفحة PDF واحدة مع المحتوى والتعليقات التوضيحية والهندسة |
Page.SetMediaBox | تحديد صندوق وسائط الصفحة |
Page.SetCropBox | تحديد منطقة القص المرئية |
Page.SetRotation | تدوير الصفحة بزاوية 0 أو 90 أو 180 أو 270 درجة |
PageCollection | مجموعة مرتبة من الصفحات في مستند |
PageCollection.Add | إضافة صفحة فارغة |
OperatorCollection | مشغلات تدفق المحتوى الخام لصفحة |
FileSpecification | وصف مرفق ملف مدمج |
ImageStamp | ختم تغطية صورة للصفحات |
XFormCollection | كائنات XObjects للنموذج القابلة لإعادة الاستخدام في المستند |