Як працювати з 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(), допускає повторення, тому одна і та ж вихідна сторінка може з’явитися в результаті більше одного разу.