function SaveAsNormalizedContent(Stream: TStream; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean;
function SaveAsNormalizedContent(const FileName: string; out Report: TPdfContentNormalizeReport; const Options: TPdfContentNormalizeOptions; SaveOption: TSaveOption = saNoIncremental; PdfVersion: TPdfVersion = pvUnknown): Boolean;
Обычный путь сохранения PDFium остаётся семантическим источником для текущих правок в памяти
Каждый массив /Contents страницы декодируется по порядку и объединяется тем же разделителем между потоками, который использует PDFium
Токенизатор сохраняет литеральные строки, hex-строки, имена, массивы, словари, данные встроенных изображений и неизвестные операторы, приводя разделение токенов к каноническому виду
По умолчанию комментарии удаляются, а сбалансированность областей q/Q, BT/ET, marked-content, compatibility, массивов и словарей проверяется
Успешные страницы получают один новый поток содержимого, а исходные объекты содержимого, на которые больше нет ссылок, удаляются из переписанного активного графа объектов
Отчёт включает нормализованные и пропущенные страницы, количества входных и выходных потоков, объединённые массивы, токены, комментарии, встроенные изображения, неизвестные операторы и байтовые счётчики
TPdfContentNormalizeOptions.Default включает удаление комментариев, проверку сбалансированного состояния, сжатие Flate при выгоде, пропуск небезопасных страниц и лимиты байтов и токенов на страницуSkipUnsafePages в False, когда любой некорректный токен, неразрешённая граница встроенного изображения, неподдерживаемый фильтр или нарушение лимита должно прерывать всё сохранениеAllowSignedDocument, поскольку полная перезапись аннулирует существующие байтовые диапазоныsaIncremental отклоняется, поскольку нормализация записывает полную активную ревизию
Options := TPdfContentNormalizeOptions.Default;
Options.SkipUnsafePages := False;
Pdf.SaveAsNormalizedContent('normalized.pdf', Report, Options);