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

См. также:

 Русский