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

Enterprise редакция

Document E-Filing — глубокий справочник

  • EFilingOptimizer подготавливает PDF к электронной судебной подаче за один проход с фиксированным порядком: санитизация, линеаризация, разбиение по размеру.
  • EFilingProfile кодирует ограничения юрисдикции. Встроенные фабрики охватывают US PACER, EU e-Justice и Taiwan Judicial Yuan.
  • SizeAwareSplitter обеспечивает байтовый лимит на сегмент с повторным разбиением по схеме «проверить, затем скорректировать».
  • Вывод — это артефакт доставки. Он не должен повторно входить в конвейеры подписания или архивирования.
  • Модуль не выполняет криптографических операций и не совершает исходящих сетевых вызовов.

Эта возможность поставляется в составе NextPDF Enterprise (nextpdf/enterprise) и активируется лицензионным конвертом уровня Enterprise. Развёртывание без этого права не загружает классы возможности. Сравнить редакции и получить лицензию.

Границей этой поверхности служит пакет nextpdf/enterprise; отдельного кода возможности на каждую функцию нет. Ни Core, ни Pro не предоставляют оптимизатор электронной подачи.

Окно терминала
composer require nextpdf/enterprise:^3
СимволПараметрыПоведение по умолчаниюВозвращаетБросает или завершается с ошибкойПримечания
EFilingOptimizer::optimize()string $pdfData, ?EFilingProfile $profile = nullПрофиль по умолчанию — EFilingProfile::pacer(); выполняет санитизацию, линеаризацию, разбиение по размеру в фиксированном порядкеEFilingResultInvalidArgumentException на шаге разбиения, когда вход сверх лимита не является корректным PDF; сбои санитизации и линеаризации понижаются до предупрежденийВывод — это артефакт доставки
EFilingProfile::__construct()$name, $maxFileSizeBytes = 26_214_400, $flattenForms = true, $removeJavaScript = true, $imageQuality = 75, $linearize = true, $compressObjectStreams = trueНеизменяемый профиль юрисдикцииEFilingProfileНе бросаетСобственные лимиты для порталов без встроенной фабрики
EFilingProfile::pacer()нетЛимит 25 MiB, качество изображения 75EFilingProfileНе бросаетUS PACER
EFilingProfile::euJustice()нетЛимит 10 MiB, качество изображения 70EFilingProfileНе бросаетПортал EU e-Justice
EFilingProfile::taiwan()нетЛимит 10 MiB, качество изображения 70EFilingProfileНе бросаетTaiwan Judicial Yuan
SizeAwareSplitter::splitByMaxSize()string $pdfData, int $maxBytesОдин сегмент, когда вход помещается; иначе оценка, проверка, повторное разбиениеlist<EFilingSegment>InvalidArgumentException, когда вход сверх лимита не имеет заголовка %PDFВход под лимитом возвращается как один сегмент без проверки
EFilingResult::isSplit()нетtrue, когда сегментов больше одногоboolНе бросает
EFilingResult::segmentCount()нетОбщее число сегментовintНе бросает
EFilingResult::compressionRatio()нетoptimizedTotalSize / originalSizefloatНе бросает; 0.0 при пустом исходном входеМеньше — лучше
EFilingSegment$pdfData, $pageRange, $sizeBytes, $segmentIndexНеизменяемый выходной сегментобъект-значениеНе бросаетСтрока диапазона страниц, например 1-25 или all
public function optimize(string $pdfData, ?EFilingProfile $profile = null): EFilingResult
public function __construct(
public string $name,
public int $maxFileSizeBytes = 26_214_400,
public bool $flattenForms = true,
public bool $removeJavaScript = true,
public int $imageQuality = 75,
public bool $linearize = true,
public bool $compressObjectStreams = true,
) {}
public static function pacer(): self
public static function euJustice(): self
public static function taiwan(): self
public function splitByMaxSize(string $pdfData, int $maxBytes): array
public function __construct(
public array $segments,
public int $originalSize,
public int $optimizedTotalSize,
public array $optimizations = [],
public array $warnings = [],
) {}
public function isSplit(): bool
public function segmentCount(): int
public function compressionRatio(): float

EFilingOptimizer::optimize() запускает конвейер с фиксированным порядком над входными байтами. Шаг первый удаляет активное содержимое, когда установлен removeJavaScript. Он делегирует движку обезвреживания и реконструкции содержимого с политикой, специфичной для подачи: JavaScript, именованный JavaScript, действия launch, отправка форм и действия импорта данных удаляются; действия URI сохраняются (allowUriActions), поскольку подачи могут нести легитимные ссылки; инкрементальные обновления сводятся в одну ревизию (flattenIncrementalUpdates). Шаг второй линеаризует санитизированные байты через Core NextPDF\Writer\Linearizer, когда установлен linearize. Шаг третий обеспечивает соблюдение maxFileSizeBytes профиля через SizeAwareSplitter.

Разделитель оценивает число страниц на сегмент по среднему размеру страницы, разбивает, затем проверяет каждый полученный сегмент относительно лимита. Любой сегмент сверх лимита, всё ещё охватывающий более одной страницы, разбивается повторно рекурсивно, вдвое сокращая свой диапазон страниц на каждом проходе, пока каждый потомок не поместится или не станет одной страницей. Ограниченная глубина повторного разбиения защищает от патологической несходимости. Выходные индексы перенормируются, чтобы оставаться непрерывными и отсчитываемыми от нуля.

optimize() использует три поля профиля: maxFileSizeBytes, removeJavaScript и linearize. Поля flattenForms, imageQuality и compressObjectStreams — это объявленные ограничения профиля, на которые optimize() не реагирует в 3.1.0.

Вывод электронной подачи — это артефакт доставки, а не состояние жизненного цикла документа. Оптимизированный или разбитый PDF является финальным для передачи и не должен повторно входить в конвейер подписания или архивирования; повторная обработка нарушила бы цепочки хешей и доказательную целостность.

Этот модуль подготавливает форматы для подачи в электронные суды / государственные органы согласно настройкам. Он не гарантирует принятия каким-либо судом, реестром, трибуналом или порталом подачи. Встроенные лимиты профилей кодируют общеопубликованные ограничения для удобства, а не как живой поток от каждого портала; правила порталов различаются по юрисдикциям и меняются. Сверка их с текущими правилами целевого реестра — ответственность подателя.

Обработка выполняется внутри процесса и локально. Передача в суд, реестр или портал подачи внешняя по отношению к этому модулю.

  • Вход на уровне лимита или ниже: один сегмент с диапазоном страниц all; шаг разбиения оставляет байты без изменений.
  • Отклонение санитизации (например, неразбираемый вход): фиксируется предупреждение CDR sanitization rejected: <reason>, и конвейер продолжает работу с исходными байтами.
  • Проход санитизации без обнаруженных угроз: байты всё равно заменяются перестроенным PDF, а запись оптимизации фиксирует чистый проход.
  • Сбой линеаризации: фиксируется предупреждение Linearization skipped: <message>, и конвейер продолжает работу с нелинеаризованными байтами.
  • Одна страница сверх лимита: действительно неделима, возвращается без изменений как один сегмент сверх лимита. Для этого случая предупреждение не фиксируется; сравнивайте sizeBytes каждого сегмента с лимитом профиля перед подачей.
  • Достигнут предел глубины повторного разбиения: сегмент сверх лимита проходит без изменений, а не зацикливается.
  • compressionRatio() возвращает 0.0, когда исходный вход пуст.
  • Модуль не выполняет криптографических операций; режим FIPS неприменим.
ПоведениеСсылкаСтатус
Организация линеаризованного вывода (данные первой страницы в начале файла)ISO 32000-2:2020 Annex F / Annex GРазработано с ориентацией на
Семантика связи присоединённого файлаISO 19005-3:2012 §6.7.8Соблюдается там, где применимы носители
Требования к носителю встроенного файлаISO 19005-4:2020 Annex AСоблюдается там, где применимы носители

Линеаризация нацелена на организацию линеаризованного PDF, которая размещает все данные, необходимые для отображения первой страницы, в начале файла для эффективного инкрементального доступа.

Эти строки описывают возможность, разработанную с ориентацией на цитируемые пункты. Поддержка — это не соответствие, а соответствие — не сертификация; NextPDF не имеет сертификации. Ни одно утверждение на этой странице не гарантирует принятия каким-либо порталом подачи.

Эта страница помечена export_control_class: legal-review-required. NextPDF не предоставляет юридических консультаций. Правила подачи различаются по юрисдикциям и меняются; их соблюдение — ответственность подателя. Обратитесь к юрисконсульту и текущим указаниям целевого реестра.

use NextPDF\Enterprise\Document\EFiling\EFilingOptimizer;
use NextPDF\Enterprise\Document\EFiling\EFilingProfile;
$optimizer = new EFilingOptimizer();
$result = $optimizer->optimize($pdfBytes, EFilingProfile::euJustice());
foreach ($result->segments as $segment) {
// Persist $segment->pdfData; confirm $segment->sizeBytes fits the cap.
}
  • Проверяйте $result->warnings перед подачей. Отклонённая санитизация или пропущенная линеаризация проявляется там, а не как исключение.
  • Сначала подпишите и заархивируйте исходный документ; затем оптимизируйте копию для доставки. Никогда не переподписывайте, не проставляйте повторно штампы и не архивируйте оптимизированный сегмент.
  • Проверяйте sizeBytes каждого сегмента относительно лимита профиля. Неделимая страница сверх лимита достигает вывода незаметно.
  • Для порталов без встроенной фабрики сконструируйте собственный EFilingProfile с опубликованным лимитом портала.

Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов руководств по эксплуатации и префиксы тикетов вне области рассмотрения.