Справочник API Artisan
Пакет Artisan (nextpdf/artisan) предоставляет две связанные группы API. API отрисовки в Chrome — ChromeRendererConfig, ChromeHtmlRenderer, ChromeSecurityPolicy, ChromeRenderResult, ViewportCalculator и BrowserPool — превращает фрагмент Hypertext Markup Language (HTML) в файл Portable Document Format (PDF), созданный в Chrome. API парсера и импортёра — PdfReader, PageImporter, ImportedFormXObject, а также вспомогательные классы токенизатора и перекрёстных ссылок — встраивает этот результат обратно в документ NextPDF как Form XObject с выделяемым текстом.
С чего начать: если вам нужен только PDF из HTML, этот пакет редко приходится использовать напрямую. Подключите ChromeRendererConfig к документу NextPDF Document и вызовите writeHtmlChrome(); см. краткое руководство. Используйте приведённые ниже классы, когда встраиваете отрисовщик в обработчик-воркер или диагностируете парсер. Первый пример в разделе “Типовые задачи” показывает путь в один вызов.
Типовые задачи
Заголовок раздела «Типовые задачи»Три сценария ниже охватывают почти все промышленные варианты использования: от самого высокоуровневого вызова до явного конвейера отрисовки и импорта. Каждый пример проверен по nextpdf-Artisan/src (а также по README.md / ci/tests/ пакета).
Отрисуйте фрагмент HTML в PDF с выделяемым текстом каноническим вызовом.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Artisan\ChromeRendererConfig;
require __DIR__ . '/vendor/autoload.php';
$config = new ChromeRendererConfig(chromeBinaryPath: '/usr/bin/chromium');
$doc = Document::createStandalone();$doc->setChromeRendererConfig($config);$doc->addPage();$doc->writeHtmlChrome('<div style="display:flex;gap:20px"><h2>Revenue</h2><p>$124,500</p></div>');$doc->save('/tmp/report.pdf');Что делает: Chrome выполняет вёрстку фрагмента. Мост встраивает страницу 0 как Form XObject, поэтому текст остаётся выделяемым. writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static автоматически подбирает высоту, когда $height равен null.
Запустите отрисовщик и импортируйте страницу самостоятельно, когда нужен явный конвейер, лежащий в основе writeHtmlChrome(), например в обработчиках-воркерах или собственных сценариях размещения.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeHtmlRenderer;use NextPDF\Artisan\ChromeRendererConfig;use NextPDF\Artisan\ImportedFormXObject;use NextPDF\Artisan\PageImporter;use NextPDF\Parser\PdfReader;
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig(renderTimeout: 30));
try { $result = $renderer->render($html, widthPt: 595.28);
$reader = new PdfReader($result->getPdfData()); $reader->parse();
$form = (new PageImporter())->import($reader);} finally { $renderer->close();}Что делает: отрисовывает байты PDF в Chrome, парсит их и импортирует страницу 0 в ImportedFormXObject, который вы можете разместить. Всегда вызывайте close() у отрисовщика, чтобы освободить процесс Chrome.
Соберите конфигурацию из массива в стиле фреймворка для config/*.php или из параметров бандла, а не из жёстко заданных аргументов конструктора.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
$config = ChromeRendererConfig::fromArray([ 'chrome_binary' => '/usr/bin/chromium', 'render_timeout' => 45, 'max_html_size' => 2_000_000, 'no_sandbox' => false,]);Что делает: сопоставляет массив конфигурации в snake-case с конструктором. Для незаданных ключей используются значения по умолчанию, а chrome_binary применяется, только если это непустая строка.
Отрисовщик Chrome
Заголовок раздела «Отрисовщик Chrome»Эти типы реализуют путь отрисовки. Создайте ChromeRendererConfig, передайте его в ChromeHtmlRenderer, затем вызовите render(), чтобы получить ChromeRenderResult.
| Символ | Параметры | Поведение по умолчанию | Возвращает | Выбрасывает или завершается с ошибкой | Примечания |
|---|---|---|---|---|---|
new ChromeRendererConfig(?string $chromeBinaryPath = null, int $renderTimeout = 30, string $defaultCss = '', int $maxHtmlSize = 5000000, bool $noSandbox = false) | Путь к исполняемому файлу, тайм-аут, Cascading Style Sheets (CSS), ограничение размера HTML, флаг песочницы. | Автоматически находит Chrome, когда путь к исполняемому файлу равен null; песочница остаётся включённой, пока её не отключат. | ChromeRendererConfig | не ожидается. | Задавайте noSandbox, только если этого требует среда выполнения. |
ChromeRendererConfig::fromArray(array $config) | chrome_binary, render_timeout, default_css, max_html_size, no_sandbox. | Для отсутствующих значений используются значения по умолчанию конструктора. | ChromeRendererConfig | При несовпадении типов для необязательных ключей применяются значения по умолчанию. | Подходит для массивов конфигурации в стиле фреймворка. |
new ChromeHtmlRenderer(ChromeRendererConfig $config, ?LoggerInterface $logger = null, ?HtmlSecurityPolicyInterface $htmlSecurityPolicy = null) | Конфигурация, необязательный логгер, необязательная политика HTML на уровне парсинга. | Использует DefaultHtmlSecurityPolicy, если политика не передана. | ChromeHtmlRenderer | Ошибки настройки Chrome возникают при первой отрисовке. | Отрисовщик владеет пулом браузеров до вызова close(). |
ChromeHtmlRenderer::render(string $html, float $widthPt, float $heightPt = 0) | html: входной фрагмент; widthPt: ширина листа; heightPt: целевая высота или авто. | Автоматически вычисляет высоту содержимого, когда heightPt <= 0. | ChromeRenderResult | ChromeRenderException; сбой проверки размера HTML. | Блокирует сетевые запросы к подресурсам через Chrome DevTools Protocol (CDP). |
ChromeHtmlRenderer::getHtmlSecurityPolicy() | нет. | Возвращает настроенную политику уровня парсинга. | HtmlSecurityPolicyInterface | не ожидается. | Дополняет средства контроля Chrome на транспортном уровне. |
ChromeHtmlRenderer::close() | нет. | Закрывает пул браузеров и очищает его. | void | Из нижележащей библиотеки могут всплывать ошибки завершения работы браузера. | Вызывайте при завершении работы обработчика-воркера. |
Политика безопасности HTML
Заголовок раздела «Политика безопасности HTML»Используйте эти API, когда проверяете и оборачиваете внешний HTML перед отрисовкой, вместо прямого вызова ChromeHtmlRenderer::render(), где они уже вызываются.
| Символ | Параметры | Поведение по умолчанию | Возвращает | Выбрасывает или завершается с ошибкой | Примечания |
|---|---|---|---|---|---|
ChromeSecurityPolicy::validate(string $html, int $maxSize) | Входной HTML и максимальный размер в байтах. | Принимает входные данные, только если размер и недопустимые конструкции проходят проверку. | void | ChromeRenderException или исключение проверки. | Запускайте перед отрисовкой в браузере, когда принимаете внешний HTML. |
ChromeSecurityPolicy::wrapHtml(string $html, int $viewportWidth, string $defaultCss = '') | Фрагмент HTML, ширина области просмотра, необязательный CSS по умолчанию. | Формирует полный документ для отрисовки вокруг фрагмента. | string | Ошибки проверки или построения строки. | Держит CSS, специфичный для отрисовщика, отдельно от HTML приложения. |
Помощники для результата и преобразований
Заголовок раздела «Помощники для результата и преобразований»Используйте эти помощники, чтобы читать результат отрисовки (ChromeRenderResult) и преобразовывать точки PDF в пиксели CSS Chrome и обратно при задании размера области просмотра или вычислении высоты.
| Символ | Параметры | Поведение по умолчанию | Возвращает | Выбрасывает или завершается с ошибкой | Примечания |
|---|---|---|---|---|---|
new ChromeRenderResult(string $pdfData, float $widthPt, float $heightPt, float $contentHeightCssPx) | Сырые байты PDF, ширина, высота, измеренная высота содержимого. | Нет проверок, кроме типизированных свойств конструктора. | ChromeRenderResult | не ожидается. | Обычно возвращается из ChromeHtmlRenderer::render(). |
ChromeRenderResult::getPdfData() | нет. | Возвращает сырые байты PDF, созданные в Chrome. | string | не ожидается. | Используйте с PdfReader и PageImporter при встраивании. |
ChromeRenderResult::getWidthPt() | нет. | Возвращает запрошенную ширину в точках. | float | не ожидается. | Используется для задания размера импортированного form-объекта. |
ChromeRenderResult::getHeightPt() | нет. | Возвращает вычисленную или запрошенную высоту в точках. | float | не ожидается. | Автоматическая высота включает буфер макета печати. |
ViewportCalculator::pointsToCssPx(float $pt) | pt: точки PDF. | Преобразует из расчёта 96 пикселей CSS на 72 точки PDF. | int | не ожидается. | Округляется для ширины области просмотра Chrome. |
ViewportCalculator::cssPxToPoints(float $px) | px: пиксели CSS. | Преобразует из расчёта 72 точки PDF на 96 пикселей CSS. | float | не ожидается. | Используется для вычисления автоматической высоты. |
API импорта и парсера
Заголовок раздела «API импорта и парсера»Это путь импорта. Распарсите байты PDF из Chrome с помощью PdfReader, затем передайте reader в PageImporter::import(), чтобы получить встраиваемую страницу; остальные методы PdfReader предназначены для диагностики.
| Символ | Параметры | Поведение по умолчанию | Возвращает | Выбрасывает или завершается с ошибкой | Примечания |
|---|---|---|---|---|---|
new PdfReader(string $data) | data: полные байты PDF. | Парсер не запускается до вызова parse(). | PdfReader | не ожидается. | Предназначен для PDF, созданных в Chrome. |
PdfReader::parse() | нет. | Парсит цепочку перекрёстных ссылок (xref) и трейлер. | void | PdfParseException при недопустимой структуре PDF. | Вызывайте перед доступом к object/page. |
PdfReader::getObject(int $objNum) | Номер объекта. | Разрешает распарсенный объект по номеру. | PdfObject | PdfParseException, когда объект отсутствует или повреждён. | Используйте после parse(). |
PdfReader::getTrailer() | нет. | Возвращает распарсенный словарь трейлера. | array | PdfParseException, когда данные трейлера недоступны. | Используется диагностикой и анализом ревизий. |
PdfReader::getObjectNumbers() | нет. | Возвращает распарсенные номера объектов. | array | не ожидается после парсинга. | Полезно для диагностики импортёра. |
PdfReader::getPage(int $pageIndex) | pageIndex: индекс страницы, отсчитываемый от нуля. | Без неявного парсинга. | PdfObject | PdfParseException, когда страница отсутствует или индекс вне диапазона. | По умолчанию импортёр использует страницу 0. |
PdfReader::getPageContentStream(PdfObject $page) | page: распарсенный объект страницы. | Разрешает поток содержимого. | string | PdfParseException при недопустимых потоках. | Пустой поток приводит к сбою импортёра. |
PdfReader::getPageResources(PdfObject $page) | page: распарсенный объект страницы. | Разрешает ресурсы страницы. | array | PdfParseException при недопустимых ресурсах. | Словарь ресурсов встраивается вместе с form-объектом. |
PdfReader::getPageMediaBox(PdfObject $page) | page: распарсенный объект страницы. | Если отсутствует, возвращает размеры, близкие к A4. | array | Сбои парсера. | Возвращает координаты в пространстве PDF. |
PdfReader::resolveRef(mixed $value) | Распарсенное значение. | Рекурсивно разрешает ссылки на объекты, где это применимо. | mixed | PdfParseException при недопустимых ссылках. | Внутренний по уровню помощник, доступный для сценариев работы импортёра. |
PdfReader::collectPageResources(PdfObject $page) | page: распарсенный объект страницы. | Обходит ссылки на ресурсы страницы. | array | Сбои парсера. | Используется для встраивания зависимых объектов вместе с импортированными страницами. |
PdfReader::getRevisionCount() | нет. | Подсчитывает распарсенные инкрементальные ревизии. | int | не ожидается после парсинга. | Полезно для подписанных или инкрементально обновлённых PDF. |
PdfReader::getRevisionXRef(int $index) | Индекс ревизии, отсчитываемый от нуля. | Возвращает одну таблицу xref ревизии. | RevisionXRefTable | PdfParseException при недопустимом индексе. | Используйте для низкоуровневой диагностики ревизий. |
PdfReader::getRevisions() | нет. | Возвращает все распарсенные таблицы xref ревизий. | array | не ожидается после парсинга. | Представление состояния парсера только для чтения. |
PageImporter::import(PdfReader $reader, int $pageIndex = 0) | Распарсенный reader и индекс страницы, отсчитываемый от нуля. | Импортирует первую страницу, когда индекс не указан. | ImportedFormXObject | PdfParseException, когда страницу не удаётся извлечь. | Собирает поток содержимого, media box, ресурсы и объекты, на которые есть ссылки. |
Вспомогательные объекты парсера
Заголовок раздела «Вспомогательные объекты парсера»Эти объекты-значения и помощники возвращаются парсером или используются внутри него. Используйте их, когда исследуете импортированные объекты, ресурсы, потоки или таблицы ревизий.
| Символ | Параметры | Поведение по умолчанию | Возвращает | Выбрасывает или завершается с ошибкой | Примечания |
|---|---|---|---|---|---|
new ImportedFormXObject(string $contentStream, array $mediaBox, array $embeddedObjects, array $resourcesDict) | Декодированный поток содержимого, media box, встроенные объекты, словарь ресурсов. | Хранит самодостаточную полезную нагрузку импортированной формы. | ImportedFormXObject | не ожидается. | Обычно возвращается из PageImporter::import(). |
ImportedFormXObject::getWidth() | нет. | Возвращает ширину импортированной формы в точках. | float | не ожидается. | Используйте при размещении вывода Chrome на странице. |
ImportedFormXObject::getHeight() | нет. | Возвращает высоту импортированной формы в точках. | float | не ожидается. | Результаты отрисовки с автоматической высотой передаются через это значение. |
ImportedFormXObject::getEmbeddedObjects() | нет. | Возвращает объекты, необходимые импортированной форме. | array | не ожидается. | Код записи использует эти объекты для сохранения ресурсов. |
ImportedFormXObject::getResourcesDict() | нет. | Возвращает импортированный словарь ресурсов. | array | не ожидается. | Используется при построении form XObject. |
ImportedFormXObject::getMediaBox() | нет. | Возвращает импортированный media box. | array | не ожидается. | Используйте для диагностики размещения. |
ImportedFormXObject::getContentStream() | нет. | Возвращает импортированный поток содержимого страницы. | string | не ожидается. | Предназначен для интеграции writer/import. |
new PdfObject(int $objectNumber, int $generation, array $dictionary, ?string $rawStreamData = null, ?string $decodedStreamData = null, ?string $rawDictionaryBytes = null) | Номер объекта, поколение, распарсенный словарь, необязательные байты потока, необязательный декодированный поток, необязательные сырые байты словаря. | Хранит распарсенное состояние объекта. | PdfObject | не ожидается. | Создаётся внутренними механизмами парсера. |
PdfObject::getRawDictionaryBytes() | нет. | Возвращает исходные байты словаря, когда они доступны. | `string | null` | не ожидается. |
PdfObject::getRawStreamData() | нет. | Возвращает недекодированные байты потока, когда они доступны. | `string | null` | не ожидается. |
PdfObject::getDictionary() | нет. | Возвращает распарсенные записи словаря. | array | не ожидается. | Представление парсера только для чтения. |
PdfObject::get(string $key) | Ключ словаря. | Возвращает null, когда ключ отсутствует. | mixed | не ожидается. | Избавляет вызывающий код от парсинга сырых словарей. |
PdfObject::getRef(string $key) | Ключ словаря. | Возвращает кортеж ссылки на объект, когда значение является ссылкой. | `array | null` | не ожидается. |
PdfObject::getArray(string $key) | Ключ словаря. | Возвращает значение-массив или пустой массив, когда оно недоступно. | array | не ожидается. | Удобная обёртка для записей словаря со значениями-массивами. |
PdfObject::hasStream() | нет. | Проверяет, присутствуют ли байты потока. | bool | не ожидается. | Отличает объекты, состоящие только из словаря. |
PdfObject::getType() | нет. | Читает /Type. | `string | null` | не ожидается. |
PdfObject::getSubtype() | нет. | Читает /Subtype. | `string | null` | не ожидается. |
RevisionExtractor::extractRevision(string $pdfData, PdfReader $reader, int $revision) | Байты PDF, распарсенный reader и индекс ревизии, отсчитываемый от нуля. | Извлекает одну инкрементальную ревизию. | string | PdfParseException при недопустимых границах. | Используется тестами и диагностикой парсера. |
RevisionExtractor::getRevisionBoundaries(string $pdfData, PdfReader $reader) | Байты PDF и распарсенный reader. | Обнаруживает диапазоны байтов для инкрементальных ревизий. | array | PdfParseException при некорректной структуре xref. | Помогает анализировать подписанные или инкрементально обновлённые PDF. |
| `StreamDecoder::decode(string $data, string | array $filter)` | Байты потока и один или несколько фильтров PDF. | Применяет фильтры по порядку. | string | PdfParseException при неподдерживаемых или недопустимых фильтрах. |
new ResourceCollector(PdfReader $reader) | Распарсенный reader. | Начинает с пустого набора собранных объектов. | ResourceCollector | не ожидается. | Используется в PdfReader::collectPageResources(). |
ResourceCollector::traverse(mixed $value, int $depth = 0) | Распарсенное значение и глубина рекурсии. | Обходит ссылки на ресурсы до внутренних ограничений глубины. | void | Сбои парсера при недопустимых ссылках. | Внутренний помощник для замыкания ресурсов при импорте страницы. |
ResourceCollector::getCollected() | нет. | Возвращает собранные объекты ресурсов. | array | не ожидается. | Вызывайте после traverse(). |
new RevisionXRefTable(int $index, int $xrefOffset, array $xrefEntries, array $trailer, ?int $prevOffset) | Индекс ревизии, смещение xref, записи xref, трейлер, необязательное предыдущее смещение. | Неизменяемый снимок одной инкрементальной ревизии. | RevisionXRefTable | не ожидается. | Создаётся внутренними механизмами парсера. |
RevisionXRefTable::getObjectNumbers() | нет. | Возвращает номера объектов, активных в таблице ревизии. | array | не ожидается. | Низкоуровневый API диагностики ревизий. |
RevisionXRefTable::getActiveObjectCount() | нет. | Подсчитывает активные объекты. | int | не ожидается. | Полезно для проверок парсера. |
RevisionXRefTable::hasRootUpdate() | нет. | Сообщает, обновляет ли ревизия корень документа. | bool | не ожидается. | Полезно для анализа инкрементальных обновлений. |
RevisionXRefTable::getSize() | нет. | Возвращает значение размера таблицы xref. | int | не ожидается. | Отражает распарсенные метаданные xref PDF. |
Низкоуровневые API токенизатора и xref
Заголовок раздела «Низкоуровневые API токенизатора и xref»Используйте эти API только для глубокой диагностики парсера или сокращения фикстур. Они открывают доступ к лексеру и механизму перекрёстных ссылок под PdfReader и не нужны при обычном импорте.
| Символ | Параметры | Поведение по умолчанию | Возвращает | Выбрасывает или завершается с ошибкой | Примечания |
|---|---|---|---|---|---|
new PdfTokenizer(string $data, int $offset = 0) | Байты PDF и необязательное начальное смещение. | Начинает со смещения ноль. | PdfTokenizer | не ожидается. | Низкоуровневый лексический парсер. |
PdfTokenizer::getOffset() | нет. | Возвращает текущее байтовое смещение. | int | не ожидается. | Диагностический помощник для ошибок парсера. |
PdfTokenizer::setOffset(int $offset) | Байтовое смещение. | Перемещает курсор токенизатора. | void | PdfParseException при недопустимом смещении. | Используйте осторожно: состоянием парсера владеет вызывающий код. |
PdfTokenizer::isEof() | нет. | Проверяет, достиг ли курсор конца. | bool | не ожидается. | Низкоуровневый помощник цикла парсера. |
PdfTokenizer::skipWhitespace() | нет. | Продвигается за пробельные символы и комментарии PDF. | void | не ожидается. | Используется перед чтением токенов. |
PdfTokenizer::readToken() | нет. | Читает следующий скалярный токен. | `string | int | float |
PdfTokenizer::readName() | нет. | Читает объект-имя PDF. | string | PdfParseException при некорректном имени. | Декодирует escape-последовательности в имени. |
PdfTokenizer::readLiteralString() | нет. | Читает литеральную строку. | string | PdfParseException при некорректной строке. | Обрабатывает вложенные скобки и escape-последовательности. |
PdfTokenizer::readHexString() | нет. | Читает шестнадцатеричную строку. | string | PdfParseException при некорректном hex. | Дополняет hex нечётной длины по правилам парсера. |
PdfTokenizer::readNumber() | нет. | Читает целое число или число с плавающей точкой. | `int | float` | PdfParseException при недопустимом числе. |
PdfTokenizer::readKeyword() | нет. | Читает ключевое слово PDF. | string | PdfParseException при недопустимом ключевом слове. | Сохраняет парсинг ключевых слов централизованным. |
PdfTokenizer::readDictionary() | нет. | Читает словарь PDF. | array | PdfParseException при некорректных словарях. | Используется для объектов, потоков и трейлеров. |
PdfTokenizer::readArray() | нет. | Читает массив PDF. | array | PdfParseException при некорректных массивах. | Рекурсивный помощник парсера. |
PdfTokenizer::readValue() | нет. | Читает любое поддерживаемое значение PDF. | mixed | PdfParseException при некорректных значениях. | Распространённый примитив парсера. |
PdfTokenizer::readStreamData(int $length) | Длина потока. | Читает ровно запрошенные байты потока. | string | PdfParseException при недопустимых границах потока. | Используется после определения длины потока из словаря. |
PdfTokenizer::peek(int $length = 1) | Количество байтов. | Читает вперёд без продвижения. | string | не ожидается. | Полезно для ветвления парсера. |
PdfTokenizer::searchBackward(string $pattern, int $startFrom = 0) | Шаблон и необязательное начальное смещение. | Ищет назад от конца или от заданного смещения. | `int | false` | не ожидается. |
PdfTokenizer::readLine() | нет. | Читает строку с текущего смещения. | string | не ожидается. | Низкоуровневый помощник сканера. |
CrossRefParser::parseXRefTable(string $data, int $offset) | Байты PDF и смещение таблицы xref. | Парсит записи классической таблицы перекрёстных ссылок. | array | PdfParseException при некорректных данных xref. | Низкоуровневый API парсера. |
CrossRefParser::parseXRefStream(string $data, int $offset) | Байты PDF и смещение потока xref. | Парсит записи потока перекрёстных ссылок. | array | PdfParseException при некорректных данных потока. | Поддерживает современные потоки xref PDF. |
Необязательные фабрики и пул браузеров
Заголовок раздела «Необязательные фабрики и пул браузеров»EInvoiceServiceFactory лениво разрешает необязательные контракты Premium для электронных счетов и возвращает null, когда они отсутствуют. BrowserPool управляет жизненным циклом Chrome, которым владеет отрисовщик; управляйте им напрямую только в долго работающих обработчиках-воркерах.
| Символ | Параметры | Поведение по умолчанию | Возвращает | Выбрасывает или завершается с ошибкой | Примечания |
|---|---|---|---|---|---|
EInvoiceServiceFactory::makeEmbedder() | нет. | Возвращает null, если не установлена поддержка электронных счетов Premium Pro. | `EmbedderInterface | null` | Ошибки создания необязательного пакета. |
EInvoiceServiceFactory::makeValidator() | нет. | Возвращает null, если не установлена поддержка проверки Premium Enterprise. | `ValidatorInterface | null` | Ошибки создания необязательного пакета. |
EInvoiceServiceFactory::makeDefaultProfile() | нет. | Возвращает профиль электронного счёта по умолчанию, если он доступен. | `ProfileInterface | null` | Ошибки необязательного пакета. |
EInvoiceServiceFactory::makeSchematronRunner() | нет. | Возвращает null, если не установлена поддержка Schematron Premium Enterprise. | `SchematronRunnerInterface | null` | Ошибки создания необязательного пакета. |
new BrowserPool(ChromeRendererConfig $config, ?LoggerInterface $logger = null) | Конфигурация отрисовщика и необязательный логгер. | Браузер запускается лениво при первом вызове getBrowser(). | BrowserPool | не ожидается до запуска браузера. | Помощник жизненного цикла, которым владеет отрисовщик. |
BrowserPool::getBrowser() | нет. | Запускает или возвращает текущий экземпляр браузера Chrome. | Browser | Ошибки запуска браузера. | Помощник жизненного цикла, которым владеет отрисовщик. |
BrowserPool::incrementRenderCount() | нет. | Увеличивает счётчик отрисовок и выполняет ротацию, когда этого требует политика пула. | void | Ошибки жизненного цикла браузера. | Используется долго работающими обработчиками-воркерами. |
BrowserPool::close() | нет. | Закрывает управляемый экземпляр браузера. | void | Ошибки завершения работы браузера. | Вызывайте при завершении работы обработчика-воркера. |
Заметки для разработки
Заголовок раздела «Заметки для разработки»- Отрисовщик не является браузерной песочницей для недоверенного HTML. Перед отрисовкой проверяйте размер, политику ресурсов и авторизацию вызывающей стороны.
- API парсера намеренно узкие. Используйте их для импорта вывода Chrome, а не для общего восстановления PDF.
- Явно закрывайте отрисовщики в долго живущих обработчиках-воркерах.