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