Aspose.PDF FOSS for TypeScript الميزات
ميزات Aspose.PDF FOSS لـ TypeScript
تستعرض هذه الصفحة المجالات الرئيسية للقدرات في Aspose.PDF FOSS لـ TypeScript والفئات التي تعمل كنقاط دخول لها، حتى تتمكن من العثور على صفحة دليل المطور المناسبة للمهمة المطلوبة. يتم تغطية كل مجال بعمق في صفحة منفصلة.
إدارة المستند والصفحة
Document هو نقطة الدخول لكل عملية: Document.New() يبدأ مستندًا فارغًا عند PageFormat المحدد، وDocument.OpenFile() / Document.Open() يحملان مستندًا موجودًا من مسار ملف أو من بايتات في الذاكرة. doc.Pages هي مصفوفة من كائنات Page، وDocument.WriteTo() / Document.Save() يكتبان النتيجة مرة أخرى.
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4);
doc.Pages[0].AddText('Hello from Aspose.PDF FOSS!', 72, 720, { fontSize: 14 });
doc.WriteTo('hello.pdf');انظر Core API لدورة حياة المستند، والتقسيم، والدمج، وتجميع الصفحات.
تحويل الصيغ
Document.ToHtml()، Document.ToDocx()، وDocument.ToMarkdown() تُحوِّل كل صفحة من مستند إلى صيغة أخرى؛ توجد نفس الطرق على Page لتحويل صفحة واحدة، بالإضافة إلى Page.ToImage() لإخراج PNG raster وPage.ToSvg() للحصول على SVG مستقل.
const doc = Document.OpenFile('report.pdf');
const html = doc.ToHtml(); // standalone HTML, all pages
const png = doc.Pages[0].ToImage({ scale: 2 }); // PNG bytes for page 1
انظر Conversion للمجموعة الكاملة من صيغ التصدير والخيارات.
التعليقات التوضيحية
Page.AddHighlight() وطريقة Page.Add*() الشقيقة تنشئان تعليقات توضيحية للنص والشكل؛ كل منهما يُعيد مقبض Annotation حي. Annotation.Flatten() يدمج مظهر التعليق التوضيحي مباشرةً في تدفق محتوى الصفحة ويزيله من /Annots، مما يجعله دائمًا وغير تفاعلي.
const highlight = doc.Pages[0].AddHighlight({ quadPoints: [72, 700, 200, 700, 72, 685, 200, 685] });
highlight.Flatten();انظر Annotations للمجموعة الكاملة من أنواع التعليقات التوضيحية والبحث في نص التعليقات.
النماذج وتسطية الحقول
يتم إنشاء حقول AcroForm عبر doc.Form، وهو واجهة Form، أو مباشرةً على Page باستخدام Page.AddTextField() / Page.AddCheckbox(). تُعيد Form.AddTextField() وForm.AddCheckbox() مقبض حقل تُطبق طريقة Flatten() الخاصة به لتدمجه في المحتوى الثابت بنفس الطريقة التي يقوم بها Annotation.Flatten().
const field = doc.Form.AddTextField({
page: 0, rect: [72, 660, 300, 680], name: 'FullName', value: 'Jane Doe',
});
field.Flatten();انظر Forms للمجموعة الكاملة من أنواع الحقول.
Security
Document.OpenFile() وDocument.Open() يقبلان خيار password لفتح المستندات المحمية، وDocument.Save() يقبل خيار encrypt لحماية واحدة عند الحفظ. Document.Sign() وDocument.Certify() يضيفان توقيعات رقمية، وDocument.VerifySignatures() يتحقق من كل توقيع موجود بالفعل في المستند.
import { Document, InvalidPasswordError } from '@asposefoss/pdf';
try {
const doc = Document.OpenFile('secret.pdf', { password: 'hunter2' });
doc.WriteTo('decrypted.pdf');
} catch (e) {
if (e instanceof InvalidPasswordError) console.error('wrong password');
else throw e;
}انظر Security للتشفير، والتوقيع، والتحقق من التوقيع.
Redaction
Page.AddRedact() يحدد منطقة مستطيلة للإخفاء دون تعديل الصفحة بعد؛ Page.ApplyRedactions() ثم يعيد كتابة تدفق المحتوى بشكل تدميري، يزيل المحتوى المحدد نهائيًا ويُعيد عدد عمليات الإخفاء التي تم تطبيقها.
page.AddRedact({ rect: [220, 550, 460, 566], fill: [0, 0, 0], overlayText: '[REDACTED]' });
const applied = page.ApplyRedactions();انظر Redaction لمزيد من التفصيل حول وضع العلامة مقابل الحجب المطبق.
بنية المستند وإمكانية الوصول
Document.AutoTag() يستنتج ويؤلف /StructTreeRoot من تخطيط الصفحة — العناوين عن طريق تجميع أحجام الخط، الفقرات، و(مع opts.alt) الأشكال — ويعيد AutoTagReport. Document.GetStructTree() يقرأ شجرة البنية الناتجة، وDocument.ValidatePdfUa() يتحقق من المستند مقابل مجموعة فرعية قابلة للفحص آليًا من PDF/UA-1.
const report = doc.AutoTag({ lang: 'en-US', title: 'Quarterly Report', tables: true });
console.log(report);انظر Structure للخطوط العريضة، والوسوم، والوجهات المسماة.
نصائح وأفضل الممارسات
- عدّل كائنات
Pageالتي يتم الوصول إليها عبرdoc.Pagesمباشرةً — التعليق أو الحقل أو الصفحة المحتفظ بها في متغيّر منفصل ولم يتم الحصول عليها من المستند الحي لا ينعكس عندما تستدعيSave()/WriteTo(). Flatten()متاح على كل منAnnotationومقابض حقول النماذج (TextField،CheckboxField، وأنواع الحقول الأخرى) — استدعِه مرة واحدة عندما يجب أن يصبح المحتوى التفاعلي محتوى صفحة دائم غير قابل للتحرير.- استدعِ
Page.ApplyRedactions()فقط بعد إضافة كل علامةPage.AddRedact()لتلك الصفحة؛ العلامات التي تُضاف بعد الاستدعاء تظل غير مطبقة. - التقط
InvalidPasswordErrorبشكل محدد قبل التقاط أوسع عند استدعاءDocument.OpenFile()/Document.Open()على مدخلات غير موثوقة. Document.AutoTag()ينتج شجرة بنية استدلالية — تحقق دائمًا من النتيجة باستخدامDocument.GetStructTree()أوValidatePdfUa()بدلاً من افتراض التوافق الكامل مع معايير إمكانية الوصول.
مشكلات شائعة
| المسألة | السبب | إصلاح |
|---|---|---|
Document.OpenFile() / Document.Open() يرمي InvalidPasswordError | المستند محمي بكلمة مرور ولم يتم توفير كلمة مرور، أو تم توفير كلمة مرور خاطئة | مرّر { password: '...' } إلى Document.OpenFile() / Document.Open() |
| علامة الحذف لا تُحدث أي تأثير | لم يتم استدعاء Page.ApplyRedactions() أبداً، أو تم استدعاؤه قبل إضافة العلامة | استدعِ Page.AddRedact() لكل علامة أولاً، ثم استدعِ Page.ApplyRedactions() مرة واحدة |
| الحقل أو التعليق المسطح لا يزال يُظهر كـ تفاعلي | تم استدعاء Flatten() على نسخة بدلاً من المقبض الذي أُعيد من استدعاء Add*() | استدعِ Flatten() على الكائن الذي تم إرجاعه مباشرةً بواسطة AddTextField() / AddHighlight() / إلخ. |
لا يزال ValidatePdfUa() يُبلغ عن بنية مفقودة بعد AutoTag() | AutoTag() هو استدلالي وقد لا يضع وسمًا على كل شكل بدون رد نداء alt | مرّر دالة opts.alt إلى AutoTag() لتزويد نص بديل للصور |
FAQ
هل يعتمد Aspose.PDF FOSS لـ TypeScript على محرك PDF تجاري؟
لا. تم إصداره تحت رخصة MIT وتعمل منطق العرض والتحويل والتوقيع بالكامل في TypeScript/JavaScript.
هل يمكنني تحويل PDF مباشرة إلى HTML أو Markdown أو DOCX؟
نعم — Document.ToHtml() وDocument.ToMarkdown() وDocument.ToDocx() يعرضون كل صفحة من المستند؛ طرق Page.ToHtml() / Page.ToMarkdown() / Page.ToDocx() المكافئة تعرض صفحة واحدة.
ما الفرق بين وضع علامة وتطبيق الإخفاء؟
Page.AddRedact() يضع علامة على المنطقة فقط — لا يزال المحتوى الأساسي موجودًا ويمكن نسخه واختياره حتى يتم استدعاء Page.ApplyRedactions()، الذي يزيله بشكل تدميري.
كيف أجعل التعليق أو حقل النموذج دائمًا وغير قابل للتعديل؟
استدعِ Flatten() على الكائن الذي أرجعه استدعاء Add*() الذي أنشأه — Annotation.Flatten() للتعليقات، أو Flatten() الخاص بملف الحقل لحقل AcroForm.
أين أذهب بعد ذلك؟
يغطي دليل البداية التثبيت ومثالًا عمليًا أوليًا. يواصل هذا الدليل للمطورين مع صفحات مخصصة لكل مجال قدرة مرتبط أعلاه.
API Reference ملخص
| فئة/طريقة | وصف |
|---|---|
Document | نقطة الدخول — إنشاء، تحميل، حفظ، وإدارة ملف PDF |
Document.New() / Document.OpenFile() / Document.Open() | ابدأ مستندًا فارغًا، أو حمّله من مسار ملف أو من بايتات الذاكرة |
Document.WriteTo() / Document.Save() | اكتب المستند إلى مسار ملف أو إرجاع البايتات |
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | قم بتحويل كل صفحة إلى تنسيق آخر |
Page.ToImage() / Page.ToSvg() | تحويل صفحة واحدة إلى PNG أو SVG |
Page.AddHighlight() وطرق التعليق Page.Add*() الأخرى | إنشاء تعليق وإرجاع مقبض حي |
Annotation.Flatten() | دمج مظهر التعليق في محتوى الصفحة الثابت |
Form / Form.AddTextField() / Form.AddCheckbox() | واجهة AcroForm وإنشاء الحقول |
Document.Sign() / Document.Certify() / Document.VerifySignatures() | إضافة أو التحقق من التوقيعات الرقمية |
Page.AddRedact() / Page.ApplyRedactions() | تمييز وتطبيق إخفاء المحتوى |
Document.AutoTag() / Document.GetStructTree() | تأليف وقراءة شجرة الهيكل المنطقي للمستند |