Aspose.PDF FOSS for TypeScript Функции
Aspose.PDF FOSS для TypeScript Возможности
Эта страница обзор основных областей возможностей Aspose.PDF FOSS для TypeScript и классов, которые служат их точками входа, чтобы вы могли найти нужную страницу руководства разработчика для текущей задачи. Каждая область подробно рассматривается на отдельной странице.
Управление документами и страницами
Document является точкой входа для каждой операции: Document.New() создает пустой документ по заданному PageFormat, а Document.OpenFile() / Document.Open() загружают существующий из пути к файлу или из байтов в памяти. doc.Pages — это массив объектов Page, а Document.WriteTo() / Document.Save() записывают результат обратно.
import { Document, PageFormat } from '@asposefoss/pdf';
const doc = Document.New(PageFormat.A4);
doc.Pages[0].AddText('Hello from Aspose.PDF FOSS!', 72, 720, { fontSize: 14 });
doc.WriteTo('hello.pdf');См. Core API для жизненного цикла документа, разделения, объединения и сборки страниц.
Преобразование форматов
Document.ToHtml(), Document.ToDocx() и Document.ToMarkdown() рендерят каждую страницу документа в другой формат; такие же методы существуют в Page для рендеринга отдельной страницы, а также Page.ToImage() для растрового вывода PNG и Page.ToSvg() для автономного SVG.
const doc = Document.OpenFile('report.pdf');
const html = doc.ToHtml(); // standalone HTML, all pages
const png = doc.Pages[0].ToImage({ scale: 2 }); // PNG bytes for page 1
См. Conversion для полного набора форматов экспорта и параметров.
Аннотации
Page.AddHighlight() и его соседний метод Page.Add*() создают разметку и аннотации-формы; каждый возвращает активный дескриптор Annotation. Annotation.Flatten() встраивает внешний вид аннотации непосредственно в поток содержимого страницы и удаляет её из /Annots, делая её постоянной и неинтерактивной.
const highlight = doc.Pages[0].AddHighlight({ quadPoints: [72, 700, 200, 700, 72, 685, 200, 685] });
highlight.Flatten();См. Annotations для полного набора типов аннотаций и поиска текста аннотаций.
Формы и уплощение полей
AcroForm поля создаются через doc.Form, фасад Form, или напрямую на Page с помощью Page.AddTextField() / Page.AddCheckbox(). Form.AddTextField() и Form.AddCheckbox() возвращают дескриптор поля, чей собственный метод Flatten() встраивает его в статическое содержимое так же, как это делает Annotation.Flatten().
const field = doc.Form.AddTextField({
page: 0, rect: [72, 660, 300, 680], name: 'FullName', value: 'Jane Doe',
});
field.Flatten();См. Forms для полного набора типов полей.
Security
Document.OpenFile() и Document.Open() принимают параметр password для открытия защищённых документов, а Document.Save() принимает параметр encrypt для защиты при сохранении. Document.Sign() и Document.Certify() добавляют цифровые подписи, а Document.VerifySignatures() проверяет каждую подпись, уже находящуюся в документе.
import { Document, InvalidPasswordError } from '@asposefoss/pdf';
try {
const doc = Document.OpenFile('secret.pdf', { password: 'hunter2' });
doc.WriteTo('decrypted.pdf');
} catch (e) {
if (e instanceof InvalidPasswordError) console.error('wrong password');
else throw e;
}См. Security для шифрования, подписания и проверки подписи.
Redaction
Page.AddRedact() отмечает прямоугольную область для редактирования, не изменяя страницу; Page.ApplyRedactions() затем разрушительно переписывает поток содержимого, окончательно удаляя отмеченный контент и возвращая количество применённых редактирований.
page.AddRedact({ rect: [220, 550, 460, 566], fill: [0, 0, 0], overlayText: '[REDACTED]' });
const applied = page.ApplyRedactions();См. Redaction для более детального изучения mark-mode и применённых редактирований.
Структура документа и доступность
Document.AutoTag() выводит и создаёт /StructTreeRoot из макета страниц — заголовки по кластеризации размеров шрифтов, абзацы и (с opts.alt) рисунки — и возвращает AutoTagReport. Document.GetStructTree() считывает полученное дерево структуры, а Document.ValidatePdfUa() проверяет документ против машинно-проверяемого подмножества PDF/UA-1.
const report = doc.AutoTag({ lang: 'en-US', title: 'Quarterly Report', tables: true });
console.log(report);См. Structure для оглавлений, тегирования и именованных назначений.
Советы и лучшие практики
- Изменяйте объекты
Page, доступ к которым осуществляется черезdoc.Pages, напрямую — аннотация, поле или страница, хранящаяся в отдельной переменной и не полученная из живого документа, не будет отражена при вызовеSave()/WriteTo(). Flatten()доступен как вAnnotation, так и в обработчиках полей формы (TextField,CheckboxFieldи других типах полей) — вызовите его один раз, когда интерактивный контент должен стать постоянным, не редактируемым содержимым страницы.- Вызывайте
Page.ApplyRedactions()только после того, как все меткиPage.AddRedact()для этой страницы будут добавлены; метки, добавленные после вызова, останутся неприменёнными. - Обрабатывайте
InvalidPasswordErrorконкретно до более общего перехвата при вызовеDocument.OpenFile()/Document.Open()на недоверенных данных. Document.AutoTag()генерирует эвристическое дерево структуры — всегда проверяйте результат с помощьюDocument.GetStructTree()илиValidatePdfUa(), а не полагайтесь на полное соответствие требованиям доступности.
Распространённые проблемы
| Проблема | Причина | Исправление |
|---|---|---|
Document.OpenFile() / Document.Open() выбрасывает InvalidPasswordError | Документ защищён паролем, и пароль не был предоставлен или был указан неверный | Передайте { password: '...' } в Document.OpenFile() / Document.Open() |
| Метка редактирования не имеет эффекта | Page.ApplyRedactions() никогда не вызывался, или был вызван до того, как была добавлена метка | Сначала вызовите Page.AddRedact() для каждой метки, затем Page.ApplyRedactions() один раз |
| Сводное поле или аннотация всё ещё отображаются как интерактивные | Flatten() был вызван на копии, а не на дескрипторе, возвращённом вызовом Add*() | Вызовите Flatten() на объекте, возвращённом напрямую AddTextField() / AddHighlight() / и т.д. |
ValidatePdfUa() всё ещё сообщает об отсутствующей структуре после AutoTag() | AutoTag() является эвристическим и может не пометить каждый рисунок без обратного вызова alt | Передайте функцию opts.alt в AutoTag(), чтобы предоставить альтернативный текст для изображений |
FAQ
Зависит ли Aspose.PDF FOSS для TypeScript от коммерческого PDF-движка?
Нет. Он выпущен под лицензией MIT, а его логика рендеринга, конвертации и подписи полностью работает в TypeScript/JavaScript.
Могу ли я напрямую конвертировать PDF в HTML, Markdown или DOCX?
Да — Document.ToHtml(), Document.ToMarkdown() и Document.ToDocx() рендерят каждую страницу документа; аналогичные методы Page.ToHtml() / Page.ToMarkdown() / Page.ToDocx() рендерят отдельную страницу.
В чём разница между пометкой и применением редактирования?
Page.AddRedact() только помечает область — подлежащий контент всё ещё присутствует и может быть скопирован, пока не вызывается Page.ApplyRedactions(), который разрушительно удаляет его.
Как сделать аннотацию или поле формы постоянными и неизменяемыми?
Вызовите Flatten() у объекта, возвращённого вызовом Add*(), который его создал, — Annotation.Flatten() для аннотаций или собственный Flatten() дескриптора поля для полей AcroForm.
Куда мне идти дальше?
Getting Started охватывает установку и первый рабочий пример. Это руководство для разработчиков продолжается отдельными страницами для каждой области возможностей, указанных выше.
API Reference Сводка
| Класс/Метод | Описание: |
|---|---|
Document | Точка входа — создание, загрузка, сохранение и управление PDF |
Document.New() / Document.OpenFile() / Document.Open() | Создайте пустой документ или загрузите его из пути к файлу или из байтов в памяти |
Document.WriteTo() / Document.Save() | Запишите документ в путь к файлу или верните байты |
Document.ToHtml() / Document.ToDocx() / Document.ToMarkdown() | Отобразите каждую страницу в другом формате |
Page.ToImage() / Page.ToSvg() | Отобразите одну страницу в PNG или SVG |
Page.AddHighlight() и другие методы аннотирования Page.Add*() | Создать аннотацию, возвращающую живой дескриптор |
Annotation.Flatten() | Запечь внешний вид аннотации в статическое содержимое страницы |
Form / Form.AddTextField() / Form.AddCheckbox() | AcroForm фасад и создание полей |
Document.Sign() / Document.Certify() / Document.VerifySignatures() | Добавить или проверить цифровые подписи |
Page.AddRedact() / Page.ApplyRedactions() | Отметить и применить редактирование контента |
Document.AutoTag() / Document.GetStructTree() | Автор и чтение логического дерева структуры документа |