مقدمة

Aspose.PDF FOSS لـ TypeScript هي مكتبة مفتوحة المصدر جديدة للعمل مع مستندات PDF من كود Node.js. تم إصدارها تحت رخصة MIT وتتوفر كحزمة @asposefoss/pdf، وتتطلب فقط Node.js (>=22) عند التشغيل — لا توجد أي تبعيات تشغيل أخرى.

تم تنظيم المكتبة حول الفئتين Document و Page. تقوم Document.OpenFile() و Document.Open() بتحميل ملف PDF من القرص أو من بايتات الذاكرة، وتبدأ Document.New() مستندًا فارغًا؛ كل صفحة في doc.Pages تكشف عن طرق لإضافة النصوص، الصور، التعليقات التوضيحية، وحقول AcroForm، بالإضافة إلى تحويل نفسها إلى صيغ أخرى. من هناك، يغطي API تقسيم، دمج، وإعادة ترتيب الصفحات، تحويل المستندات إلى HTML، Markdown، DOCX، SVG، وصور نقطية، إضافة وتسوية التعليقات التوضيحية، بناء نماذج تفاعلية، وتشفير، توقيع، أو تمويه النتيجة.

هذا الإصدار موجه للمطورين الذين يحتاجون إلى معالجة PDF داخل قاعدة شفرة Node.js أو TypeScript دون رخصة تجارية: خطوط تجميع المستندات، أدوات النشر التي تُحوِّل PDFs إلى صيغ جاهزة للويب، أتمتة تعبئة النماذج، والخدمات التي تحتاج إلى تنقيح أو تشفير ملفات PDF الحساسة قبل التوزيع. المشروع حالياً في الإصدار 0.1.0 وتحت تطوير نشط في مرحلته المبكرة، لذا قد تتطور واجهات برمجة التطبيقات وتغطية الميزات قبل الإصدار المستقر.


ما الذي يتضمنه

إدارة المستند والصفحات

Document.OpenFile() / Document.Open() تقوم بتحميل ملف PDF من القرص أو من Uint8Array في الذاكرة؛ Document.New() يبدأ مستندًا فارغًا. يمكن تقسيم الصفحات إلى مستندات منفصلة باستخدام Document.Split()، استخراجها باستخدام Document.ExtractPages()، دمجها باستخدام Document.Merge()، أو إلحاقها بمستند موجود باستخدام Document.Append(). تقوم 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();

تحويل الصيغ

المستندات الكاملة تُحول إلى HTML باستخدام Document.ToHtml() وإلى تنسيق Markdown بنكهة GitHub باستخدام Document.ToMarkdown(). الصفحات الفردية تُحول إلى SVG مستقل باستخدام Page.ToSvg() أو إلى بايتات PNG نقطية باستخدام Page.ToImage(). تنتج Document.ToDocx() / Page.ToDocx() مخرجات .docx إما مُعاد تدفقها أو ذات تخطيط ثابت.

import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
const png = doc.Pages[0].ToImage({ scale: 2 }); // Uint8Array of PNG bytes @144 DPI
const html = doc.ToHtml();                 // standalone semantic HTML, all pages
const md = doc.ToMarkdown();               // GFM Markdown, all pages
const docx = doc.ToDocx();                 // .docx bytes, reflowed, images in the package

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

كل Page تعرض طرق التعليقات التوضيحية مباشرةً: Page.AddHighlight()، Page.AddUnderline()، Page.AddSquiggly()، و Page.AddStrikeOut() تضيف تمييزًا للنص؛ Page.AddTextNote()، Page.AddFreeText()، و Page.AddStamp() تضيف ملاحظات لاصقة، نصًا مستقلًا، وتعليقات توضيحية على شكل طابع. الأنواع الفرعية المكتوبة مثل MarkupAnnotation و StampAnnotation تكشف عن طريقة Flatten() لدمج التعليق التوضيحي في محتوى الصفحة.

AcroForms

فئة Form تبني حقولًا تفاعلية مباشرةً: AddTextField()، AddCheckbox()، AddRadioGroup()، AddComboBox()، AddListBox()، و AddPushButton() كل منها يُعيد فئة فرعية مكتوبة من Field. استدعاء SetStyle() أو GenerateAppearance() على حقل يُعيد تحديث مظهره المرسوم، و Document.FlattenForm() يدمج القيمة الحالية لكل حقل في محتوى صفحة ثابت.

function addFormFields(doc: Document, page: Page): void {
  const form = doc.Form;
  const pageNum = page.Number;

  // Text field
  form.AddTextField({
    page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
  });

  // Checkbox
  form.AddCheckbox({
    page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
    checked: true,
  });
}

الأمان والتنقيح

Document.WriteTo() تقبل خيار encrypt يدعم AES-128، AES-256، أو RC4، مع كلمة مرور منفصلة للمستخدم والمالك وتصاريح Permissions دقيقة. يمكن إزالة المناطق الحساسة أو النص المطابق بشكل دائم باستخدام Document.Redact()، Document.RedactText()، و Page.ApplyRedactions()، يتم تكوينها عبر RedactOptions.

import { Document } from '@asposefoss/pdf';
const doc = Document.OpenFile('in.pdf');
doc.WriteTo('locked.pdf', {
  encrypt: {
    userPassword: 'open-me',       // required to open (default '')
    ownerPassword: 'full-rights',  // default: same as userPassword
    algorithm: 'aes256',           // 'aes256' (default) | 'aes128' | 'rc4'
    permissions: { copying: false, modifying: false },
    encryptMetadata: true,
  },
});

البدء السريع

قم بتثبيت الحزمة، ثم افتح ملف PDF موجود، حرّر صفحاته وبياناته الوصفية، واحفظ النتيجة:

asposefoss/pdf is not yet published — build from source until it ships. See the project README for build instructions.
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]);

// Metadata
doc.SetMetadata({ title: 'Report', author: 'Jane', custom: { Dept: 'R&D' } });

// Save
doc.WriteTo('output.pdf');         // or: const bytes = doc.Save();
doc.WriteTo('small.pdf', { compressed: true }); // xref stream + object streams

الصيغ المدعومة

تنسيقامتدادقراءةكتابة
PDFpdf
Markdownmd
SVGsvg
TIFFtiff
DOCXdocx
HTMLhtml
PNGpng
EPUBepub

المصدر المفتوح والترخيص

Aspose.PDF FOSS for TypeScript يُصدر تحت رخصة MIT، مع نشر المصدر على GitHub. لا توجد علامة مائية للتقييم، ولا حد للاستخدام، ولا ملف ترخيص منفصل لإدارته، ويمكن استخدام المكتبة في المنتجات التجارية دون حقوق ملكية.

الحزمة حالياً في الإصدار 0.1.0، مما يعكس تطويراً نشطاً في مرحلة مبكرة. Node.js (>=22) هو المتطلب الوحيد في وقت التشغيل، ولا توجد أي تبعيات طرف ثالث أخرى للحزمة.


البدء

الموارد ذات الصلة