چگونه با Core PDF API در TypeScript کار کنیم
این راهنما نشان میدهد چگونه اسناد PDF را با Aspose.PDF منبع باز برای TypeScript باز، ایجاد، ویرایش، تقسیم و ذخیره کنید. کلاسهای Document و Page نقطههای ورودی برای هر عملیات در کتابخانه هستند — باز کردن و ایجاد فایلها، ویرایش صفحات در محل، تقسیم و ترکیب اسناد، و ذخیره نتیجه. این کتابخانه فقط به Node.js 22 یا بالاتر نیاز دارد.
راهنمای گامبهگام
مرحله ۱: نصب بسته
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';مرحله ۲: وارد کردن کلاسهای مورد نیاز
با استفاده از Document یک PDF را بارگذاری یا ایجاد کنید، و PageFormat را اگر قصد دارید سندی را از ابتدا شروع کنید، به کار ببرید:
import { Document, PageFormat } from '@asposefoss/pdf';مرحله ۳: باز کردن یک 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();
مرحله ۴: ایجاد یک 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');مرحله ۵: تقسیم، استخراج و ترکیب صفحات
Document.Split() برای هر صفحه یک Document باز میگرداند. Document.ExtractPages() یک فهرست صفحهای با شمارهگذاری از ۱ و امکان تکرار میگیرد و یک 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 را از یک بافر در حافظه بهجای مسیر فایل بارگذاری کنم؟
به جای مسیر Document.OpenFile()، یک Uint8Array را به Document.Open() منتقل کنید.
چگونه یک صفحه را بچرخانم؟
page.Rotate را روی 90، 180 یا 270 تنظیم کنید، سپس سند را با Document.WriteTo() ذخیره کنید.
آیا میتوانم یک صفحهٔ تک را از یک سند به سند دیگر کپی کنم؟
بله — Document.InsertPage(at, sourcePage) یک صفحه را از سند دیگر در موقعیت یکپایهٔ دادهشده کپی میکند، بدون اینکه کل سند را کپی کند.
آیا Document.ExtractPages() اجازه میدهد همان صفحه دو بار ظاهر شود؟
بله. فهرست شمارههای صفحهای که به Document.ExtractPages() پاس داده میشود، تکرار را میپذیرد، بنابراین همان صفحهٔ منبع میتواند بیش از یک بار در نتیجه ظاهر شود.