ویژگیهای 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');مشاهده کنید هسته API برای چرخه حیات سند، تقسیم، ادغام و ترکیب صفحه.
تبدیل فرمت
Document.ToHtml()، Document.ToDocx() و Document.ToMarkdown() هر صفحهای از یک سند را به فرمت دیگری رندر میکنند؛ روشهای مشابهی بر روی Page برای رندر یک صفحه وجود دارد، بهعلاوه Page.ToImage() برای خروجی رستر PNG و 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.AddRedact()برای آن صفحه اضافه شد،Page.ApplyRedactions()را فراخوانی کنید؛ علامتهایی که پس از فراخوانی اضافه شوند، اعمال نمیشوند. - قبل از استفاده از یک بلوک عمومی،
InvalidPasswordErrorرا بهطور خاص بگیرید هنگام فراخوانیDocument.OpenFile()/Document.Open()روی ورودیهای غیرقابل اعتماد. Document.AutoTag()یک درخت ساختاری هئورستیک تولید میکند — همیشه نتیجه را باDocument.GetStructTree()یاValidatePdfUa()بررسی کنید بهجای اینکه فرض کنید سازگاری کامل دسترسپذیری وجود دارد.
مشکلات رایج
| مسئله | دلیل | رفع |
|---|---|---|
Document.OpenFile() / Document.Open() استثنا InvalidPasswordError را پرتاب میکند | سند با رمز عبور محافظت میشود و هیچ رمز عبوری یا رمز نادرست ارائه نشده است | مقدار { password: '...' } را به Document.OpenFile() / Document.Open() پاس دهید |
| علامت Redaction هیچ تاثیری ندارد | Page.ApplyRedactions() هرگز فراخوانی نشد، یا پیش از اضافه شدن علامت فراخوانی شد | ابتدا برای هر علامت Page.AddRedact() را صدا بزنید، سپس یکبار Page.ApplyRedactions() را |
| فیلد یا حاشیهنویسی مسطح همچنان بهصورت تعاملی نشان داده میشود | Flatten() بر روی یک نسخه فراخوانی شد نه روی دستگیرهای که توسط فراخوانی Add*() بازگردانده شد | Flatten() را بر روی شیءای که مستقیماً توسط AddTextField() / AddHighlight() / و غیره بازگردانده میشود، صدا بزنید. |
ValidatePdfUa() هنوز پس از AutoTag() ساختار گمشده را گزارش میدهد | AutoTag() یک روش هیورستیک است و ممکن است بدون یک کالبک alt هر شکل را برچسبگذاری نکند | یک تابع opts.alt را به AutoTag() بدهید تا متن جایگزین برای تصاویر فراهم شود |
FAQ
آیا Aspose.PDF منبع باز برای TypeScript به یک موتور تجاری PDF وابسته است؟
نه. تحت مجوز MIT منتشر شده است و منطق رندرینگ، تبدیل و امضای آن کاملاً در TypeScript/JavaScript اجرا میشود.
آیا میتوانم یک PDF را مستقیماً به HTML، Markdown یا DOCX تبدیل کنم؟
بله — Document.ToHtml()، Document.ToMarkdown() و Document.ToDocx() هر صفحه از سند را رندر میکنند؛ روشهای معادل Page.ToHtml() / Page.ToMarkdown() / Page.ToDocx() تنها یک صفحه را رندر میکنند.
تفاوت بین علامتگذاری و اعمال حذف (redaction) چیست؟
Page.AddRedact() فقط یک ناحیه را علامتگذاری میکند — محتویات زیرین همچنان موجود است و میتوان آن را کپی و انتخاب کرد تا زمانی که Page.ApplyRedactions() فراخوانی شود، که بهصورت مخرب آن را حذف میکند.
چگونه میتوان یک حاشیهنویسی یا فیلد فرم را دائمی و غیرقابل ویرایش کرد؟
متد Flatten() را بر روی شیءای که توسط فراخوانی Add*() ایجاد شده است، صدا بزنید — Annotation.Flatten() برای حاشیهنویسیها، یا Flatten() مخصوص دستهفیلد برای فیلدهای AcroForm.
بعداً کجا باید بروم؟
Getting Started شامل نصب و یک مثال اولیهٔ کارکرد است. این راهنمای توسعهدهنده با صفحات اختصاصی برای هر حوزهٔ قابلیت که در بالا لینک شدهاند ادامه مییابد.
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() | نویسنده و خواندن درخت ساختار منطقی سند |