Як працювати з Core PDF API у TypeScript

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

Дивіться також

 Українська