איך לעבוד עם 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() מאפשרת חזרות, ולכן אותו דף מקור יכול להופיע יותר מפעם אחת בתוצאה.