كيفية العمل مع Core PDF API في TypeScript
يوضح هذا الدليل كيفية فتح وإنشاء وتحرير وتقسيم وحفظ مستندات PDF باستخدام Aspose.PDF FOSS لـ TypeScript. تُعد فئتا Document وPage نقاط الدخول لكل عملية في المكتبة — فتح وإنشاء الملفات، تحرير الصفحات في مكانها، تقسيم وتجميع المستندات، وحفظ النتيجة. يتطلب ذلك فقط Node.js 22 أو أحدث.
دليل خطوة بخطوة
الخطوة 1: تثبيت الحزمة
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildتحقق من التثبيت عن طريق استيراد الفئة Document في ملف TypeScript جديد — يجب أن يتم حل هذا السطر دون خطأ بمجرد تثبيت الحزمة:
import { Document } from '@asposefoss/pdf';الخطوة 2: استيراد الفئات المطلوبة
استورد Document لتحميل أو إنشاء ملف PDF، وPageFormat إذا كنت تخطط لبدء مستند من الصفر:
import { Document, PageFormat } from '@asposefoss/pdf';الخطوة 3: فتح ملف PDF موجود وتعديل الصفحات
Document.OpenFile() يفتح ملف PDF من مسار ملف؛ Document.Open() يقبل Uint8Array في الذاكرة. يمكن فحص الصفحات وتعديلها في مكانها، وDocument.WriteTo() يكتب النتيجة مرة أخرى.
import { Document } from '@asposefoss/pdf';
// Open from disk (or Document.Open(uint8array) for in-memory data)
const doc = Document.OpenFile('input.pdf');
// Inspect and edit pages
const pages = doc.Pages;
console.log(pages.length);
pages[0].Rotate = 90;
doc.RemovePage(2); // 1-based page number
doc.Reorder([3, 1, 2]);
// Save
doc.WriteTo('output.pdf'); // or: const bytes = doc.Save();
الخطوة 4: إنشاء ملف PDF جديد من الصفر
Document.New() يبدأ مستندًا فارغًا في PageFormat المحدد. Page.AddText() يضع نصًا متموضعًا، وDocument.AddPage() يضيف صفحات إضافية.
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4); // one blank A4 page
doc.Pages[0].AddText('Hello', 72, 720, { fontSize: 14 });
doc.AddPage(PageFormat.A4.landscape()); // append more as you go
doc.WriteTo('scratch.pdf');الخطوة 5: تقسيم واستخراج وتجميع الصفحات
Document.Split() يُعيد Document واحدًا لكل صفحة. Document.ExtractPages() يأخذ قائمة صفحات مبنية على الفهرس 1، وتسمح بالتكرار، ويُعيد Document جديدًا يحتوي فقط على تلك الصفحات. Document.Append() وDocument.InsertPage() ينسخان الصفحات عبر المستندات، وDocument.Merge() يجمع عدة مستندات في واحد.
const parts = doc.Split(); // one Document per page
const chapter = doc.ExtractPages([3, 4, 5]); // subset (1-based, repeats allowed) as a new Document
docA.Append(docB); // copy all of docB's pages onto docA
docA.InsertPage(1, docB.Pages[0]); // copy a single page across documents
المشكلات الشائعة والحلول
Document.OpenFile() throws InvalidPasswordError. ملف PDF محمي بكلمة مرور ولا توجد كلمة مرور (أو كلمة المرور خاطئة) تم توفيرها. Pass { password: '...' } to Document.OpenFile() / Document.Open().
RemovePage() or ExtractPages() يزيل أو يستخرج الصفحة الخاطئة. هذه الأساليب تأخذ أرقام صفحات تبدأ من 1، بينما doc.Pages هي مصفوفة بسيطة تبدأ من 0 — من السهل الخلط بين نظامي الفهرسة.
WriteTo() الإخراج أكبر مما هو متوقع. الحفظ الافتراضي لا يستخدم ضغط xref/object-stream. Pass { compressed: true } to Document.WriteTo() لتفعيل ذلك.
التعديلات التي أُجريت على doc.Pages[i] لا تظهر في الملف المحفوظ. يجب أن تتم تعديلات الصفحة قبل الاستدعاء إلى Document.WriteTo() / Document.Save() — لا توجد خطوة “commit” منفصلة، لكن التعديلات التي تُجرى بعد الحفظ لن تنعكس في ملف تم كتابته على القرص بالفعل.
الأسئلة المتكررة
كيف يمكنني تحميل ملف PDF من مخزن في الذاكرة بدلاً من مسار ملف؟
مرّر Uint8Array إلى Document.Open() بدلاً من مسار إلى Document.OpenFile().
كيف أقوم بتدوير صفحة؟
عيّن page.Rotate إلى 90 أو 180 أو 270، ثم احفظ المستند باستخدام Document.WriteTo().
هل يمكنني نسخ صفحة واحدة من مستند إلى آخر؟
نعم — Document.InsertPage(at, sourcePage) ينسخ صفحة واحدة من مستند آخر في الموضع المحدد (المعتمد على الترقيم من 1) دون نسخ المستند بالكامل.
هل يسمح Document.ExtractPages() بظهور الصفحة نفسها مرتين؟
نعم. قائمة أرقام الصفحات التي تُمرّر إلى Document.ExtractPages() تسمح بالتكرار، لذا يمكن أن تظهر الصفحة المصدر نفسها أكثر من مرة في النتيجة.