Перейти к содержимому

Сборник рецептов PHP

В этом индексе перечислены рецепты NextPDF для PHP: исполняемые страницы для конкретных задач, написанные непосредственно для основного PHP API. Основной репозиторий nextpdf хранит и проверяет каждый рецепт в каталоге docs/public/cookbook/php/. У каждого рецепта есть скрипт examples/*.php и тест-обвязка tests/Cookbook/Php/. Затем агрегатор переносит каждую страницу на этот сайт и сохраняет сведения о её происхождении.

Так как эта страница служит индексом, она не делает заявлений о поведении отдельных рецептов. В каждой строке указаны назначение рецепта, используемый основной модуль и заявленный профиль воспроизводимости. Профиль и любое заявление о соответствии относятся к странице самого рецепта. Они берутся из фронтматтера этой страницы и её теста в репозитории, а не из этого индекса. Сборник рецептов по интеграциям (фреймворк / рендерер / сервис) см. в разделе Сборник рецептов по интеграции. Контракт, которому следует каждый исполняемый рецепт, см. в разделе Соглашения о рецептах.

Каждая запись [[…]] ниже — это упреждающая ссылка на страницу, создаваемую в основном репозитории в каталоге docs/public/cookbook/php/. Затем агрегатор переносит эту страницу на этот сайт. Для каждого слага действует одно соглашение: один сегмент.

/cookbook/php/<recipe>/

<recipe> называет назначение рецепта в kebab-case (например, render-html-to-pdf, а не имя модуля html). Он записывается строчными буквами, через дефис, без номеров версий и заканчивается одной завершающей косой чертой. Пока целевая страница не агрегирована, ссылка остаётся заглушкой и не разрешается. Рецепт, у которого пока нет исполняемого примера (список недостающих рецептов ниже), нельзя опубликовать, пока не появятся пример и тест-обвязка, хотя ссылка уже указывает на окончательный слаг.

Каждый рецепт объявляет самый строгий профиль, которому он может честно соответствовать:

  • bitwise — побайтово идентичный между запусками (простое детерминированное содержимое с зафиксированной энтропией).
  • structural — идентичный после нормализации изменчивых атомов (/ID в трейлере, даты creation/modification, префиксы подмножеств шрифтов — на практике любой многообъектный PDF).
  • semantic — только эквивалентность структурного AST и метаданных (подписанный результат, результат с меткой времени или результат, эквивалентность которого по своей природе не может быть побайтово стабильной).

Страница рецепта подтверждает профиль своей тест-обвязкой. Этот индекс только сообщает значение, объявленное на той странице.

Основной репозиторий уже хранит и объединяет эти пять рецептов: набор Wave 8.

РецептЧто он делаетМодульПрофиль
sign-pades (запланировано в вышестоящем репозитории)Применить базовую подпись CMS/PAdES с программным ключомБезопасностьсемантический (semantic)
encrypt-aes256 (запланировано в вышестоящем репозитории)Зашифровать с помощью AES-256 и задать флаги разрешенийБезопасностьструктурный (structural)
pdfa4-conformance-gate (запланировано в вышестоящем репозитории)Создать вывод PDF/A-4 и добавить контроль через внешний валидаторСоответствиесемантический (semantic)
accessible-pdfua2-from-html (запланировано в вышестоящем репозитории)Вывести теговую структуру для создания доступного PDF/UA-2Доступностьсемантический (semantic)
validate-signature (запланировано в вышестоящем репозитории)Проверить, содержит ли PDF подпись, и определить границу доверияинспекция (Inspect)семантический (semantic)

Создание документа, разбиение на страницы и стилизация.

РецептЧто он делаетМодульПрофиль
render-html-to-pdf (запланировано в вышестоящем репозитории)Отрисовать HTML-документ как PDFHTMLструктурный (structural)
style-with-css (запланировано в вышестоящем репозитории)Применить CSS к отрисовке HTMLHTMLструктурный (structural)
html-table-layout (запланировано в вышестоящем репозитории)Разметить HTML-таблицуHTMLструктурный (structural)
paginate-long-html (запланировано в вышестоящем репозитории)Разбить длинный HTML-документ на страницыHTMLструктурный (structural)
compose-text-and-fonts (запланировано в вышестоящем репозитории)Скомпоновать текст с управлением типографикойТипографикаструктурный (structural)
embed-and-subset-fonts (запланировано в вышестоящем репозитории)Встроить шрифты и создать подмножествашрифты (Font)структурный (structural)
cjk-vertical-writing (запланировано в вышестоящем репозитории)Набрать текст CJK в режиме вертикального письмаТипографикаструктурный (structural)
multi-page-document (запланировано в вышестоящем репозитории)Создать многостраничный документдокумент (Document)структурный (structural)
headers-and-footers (запланировано в вышестоящем репозитории)Добавить колонтитулымакет (Layout)структурный (structural)

Работа с векторами, изображениями, слоями и координатным пространством.

РецептЧто он делаетМодульПрофиль
draw-vector-graphics (запланировано в вышестоящем репозитории)Создать векторную графикуграфика (Graphics)структурный (structural)
gradients-and-transparency (запланировано в вышестоящем репозитории)Применить градиенты и прозрачностьграфика (Graphics)структурный (structural)
embed-images (запланировано в вышестоящем репозитории)Встроить растровые изображениясодержимое (Content)структурный (structural)
optional-content-layers (запланировано в вышестоящем репозитории)Использовать необязательное содержимое (слои)графика (Graphics)структурный (structural)
transform-coordinate-space (запланировано в вышестоящем репозитории)Преобразовать координатное пространствографика (Graphics)структурный (structural)

Добавление закладок, ссылок, аннотаций и полей AcroForm.

РецептЧто он делаетМодульПрофиль
bookmarks-and-toc (запланировано в вышестоящем репозитории)Создать закладки и оглавлениенавигация (Navigation)структурный (structural)
links-and-annotations (запланировано в вышестоящем репозитории)Добавить ссылки и аннотациинавигация (Navigation)структурный (structural)
generate-barcodes (запланировано в вышестоящем репозитории)Сгенерировать штрихкодыштрихкоды (Barcode)побитовый (bitwise)
fill-pdf-form (запланировано в вышестоящем репозитории)Заполнить форму AcroFormформы (Form)структурный (structural)
flatten-form-fields (запланировано в вышестоящем репозитории)Свести поля формыформы (Form)структурный (structural)

Настройка метаданных и поведения средства просмотра.

РецептЧто он делаетМодульПрофиль
set-document-metadata (запланировано в вышестоящем репозитории)Задать метаданные документаметаданные (Metadata)структурный (structural)
set-viewer-preferences (запланировано в вышестоящем репозитории)Задать настройки средства просмотрадокумент (Document)структурный (structural)

Использование шифрования, подписания, доступности и вывода по профилю. Эти рецепты сохраняют различия support≠conformance и presence≠validity на странице рецепта.

РецептЧто он делаетМодульПрофиль
encrypt-with-permissions (запланировано в вышестоящем репозитории)Зашифровать с флагами разрешенийБезопасностьструктурный (structural)
sign-pades-b-b (запланировано в вышестоящем репозитории)Применить подпись PAdES (B-B и B-T)Безопасностьсемантический (semantic)
inspect-existing-signature (запланировано в вышестоящем репозитории)Проверить существующую подписьинспекция (Inspect)семантический (semantic)
tagged-pdf-ua2 (запланировано в вышестоящем репозитории)Вывести теговую структуру для PDF/UA-2Доступностьсемантический (semantic)
pdf-a-4-output (запланировано в вышестоящем репозитории)Создать вывод PDF/A-4Соответствиесемантический (semantic)
validate-conformance (запланировано в вышестоящем репозитории)Проверить соответствие профилюсоответствие (Compliance)семантический (semantic)

Чтение содержимого и структуры обратно из PDF.

РецептЧто он делаетМодульПрофиль
extract-text-content (запланировано в вышестоящем репозитории)Извлечь текстовое содержимоетекст (Text)семантический (semantic)
parse-and-inspect-pdf (запланировано в вышестоящем репозитории)Разобрать и проверить PDFинспекция (Inspect)семантический (semantic)
inspect-layout-boxes (запланировано в вышестоящем репозитории)Проверить блоки макетаинспекция (Inspect)семантический (semantic)

Применение паттернов, которые охватывают несколько модулей.

РецептЧто он делаетОхватПрофиль
worker-safe-batch-rendering (запланировано в вышестоящем репозитории)Безопасно выполнять отрисовку в долгоживущем воркере (общие реестры, ограниченная память)ядро · производительность · поддержка (Core · Performance · Support)семантический (semantic)
exception-aware-error-handling (запланировано в вышестоящем репозитории)Обрабатывать ошибки с помощью иерархии исключений NextPDFисключения · контракты (Exception · Contracts)структурный (structural)
observe-with-opentelemetry (запланировано в вышестоящем репозитории)Наблюдать за отрисовкой с помощью OpenTelemetryнаблюдаемость · телеметрия · события (Observability · Telemetry · Event)семантический (semantic)

Этим рецептам нужен новый файл examples/*.php и обвязка tests/Cookbook/Php/ в основном репозитории, прежде чем их можно будет опубликовать. Указанный выше слаг является окончательным. Страница остаётся заглушкой, пока не появится пример и не пройдёт его тест:

  • sign-pades-b-b (запланировано в вышестоящем репозитории) (охватывает PAdES B-B и B-T)
  • inspect-existing-signature (запланировано в вышестоящем репозитории)
  • extract-text-content (запланировано в вышестоящем репозитории)
  • parse-and-inspect-pdf (запланировано в вышестоящем репозитории)
  • validate-conformance (запланировано в вышестоящем репозитории)
  • inspect-layout-boxes (запланировано в вышестоящем репозитории)
  • worker-safe-batch-rendering (запланировано в вышестоящем репозитории) (пример уже есть; добавлена новая тест-обвязка для памяти/сборки мусора)
  • observe-with-opentelemetry (запланировано в вышестоящем репозитории) (добавлен новый PHP-нативный пример)

У всех остальных рецептов выше уже есть поддерживающий файл examples/*.php, и им нужна только обёртка-обвязка. Этот индекс фиксирует слаг и будущую страницу. Он не утверждает, что какая-либо ожидающая страница уже готова.