PDFium Delphi Component Docs

FPdfContentNormalize модуль

Unit: FPdfContentNormalize
Нормалізація однієї логічної послідовності вмісту сторінок PDF зі збереженням синтаксису та надійне виявлення меж вбудованих зображень

Syntax

const
  PdfContentNormalizeDefaultInputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultOutputLimit = Int64(256) * 1024 * 1024;
  PdfContentNormalizeDefaultTokenLimit = 10000000;

function NormalizePdfContentSequence(const Streams: array of TBytes;
  const Options: TPdfContentNormalizeOptions; out Output: TBytes;
  out Report: TPdfContentNormalizeReport): Boolean;

function CollectPdfContentResourceUses(const Data: TBytes;
  out Uses: TPdfContentResourceUses;
  out ErrorText: string): Boolean;

function FindInlineImageBlock(const Data: TBytes; StartPos: Integer;
  out BiPos, IdPos, DataStart, EndImageStart: Integer): Boolean;

Description

NormalizePdfContentSequence поєднує подані потоки вмісту в порядку масиву та токенізує результат як одну логічну послідовність вмісту сторінки

Зберігає літеральні рядки, hex-рядки, імена, масиви, словники, корисні навантаження вбудованих зображень і невідомі оператори, канонізуючи розділення токенів; коментарі можна видалити, а структурну збалансованість — вимагати

CollectPdfContentResourceUses записує імена ресурсів, які споживають оператори тексту, XObject, станів графіки, колірних просторів, pattern, shading, властивостей marked content та вбудованих зображень, у межах центрального токенного бюджету

FindInlineImageBlock знаходить повний блок BI, ID і EI, не приймаючи послідовність байтів EI всередині даних зображення за термінатор

Constants

ConstantDescription
PdfContentNormalizeDefaultInputLimitТиповий логічний ліміт входу на сторінку — 256 MiB
PdfContentNormalizeDefaultOutputLimitТиповий ліміт нормалізованого виводу на сторінку — 256 MiB
PdfContentNormalizeDefaultTokenLimitТиповий ліміт на сторінку — 10000000 токенів

Functions

FunctionDescription
TPdfContentNormalizeOptions.DefaultУвімкнює видалення коментарів, перевірку збалансованості, доцільне стиснення Flate і пропуск небезпечних сторінок; забороняє переписування підписаного та застосовує три типові ліміти
NormalizePdfContentSequenceПовертає нормалізовані байти та докладний звіт або False зі статусом збою та діагностичним текстом
CollectPdfContentResourceUsesПовертає вид ресурсу та декодоване PDF-ім'я для кожного оператора вмісту, що споживає ресурс, або False з діагностичним текстом для некоректного чи надмірного за бюджетом вводу
FindInlineImageBlockПовертає зміщення для наступного повного блоку вбудованого зображення в StartPos або після нього

Types

TypeDescription
TPdfContentNormalizeStatusРезультат або категорія збою для нормалізації послідовності та документа
TPdfContentNormalizeOptionsПолітика нормалізації та побайтові й токенні ліміти на сторінку
TPdfContentNormalizeReportСтатус, підсумки байтів і сторінок, метрики потоків і токенів, синтаксичні спостереження та діагностичний текст
TPdfContentResourceKindЗначення ресурсів pcrkFont, pcrkXObject, pcrkExtGState, pcrkColorSpace, pcrkPattern, pcrkShading і pcrkProperties
TPdfContentResourceUseОдне декодоване ім'я ресурсу Name разом із його Kind
TPdfContentResourceUsesДинамічний масив зібраних використань ресурсів у порядку вмісту

Status values

ValueMeaning
pcnsNotStartedЗвіт ініціалізовано, але нормалізація не завершена
pcnsCompletedНормалізація успішно завершена
pcnsInputLimitExceededЛогічний ввід перевищив MaxInputBytesPerPage або налаштований ліміт не був додатним
pcnsOutputLimitExceededНормалізовані байти перевищили б MaxOutputBytesPerPage
pcnsTokenLimitExceededПослідовність вмісту перевищила MaxTokensPerPage
pcnsMalformedTokenТокен вмісту PDF не вдалося прочитати повністю
pcnsUnresolvedInlineImageНе вдалося знайти повну межу корисного навантаження вбудованого зображення
pcnsUnbalancedStateПорушено потрібний баланс областей графіки, тексту, marked content, сумісності, масивів чи словників
pcnsUnsupportedFilterНормалізація на рівні документа натрапила на фільтр потоку вмісту, який не може декодувати
pcnsEncryptedDocumentНормалізація на рівні документа відмовила зашифрованому вводу
pcnsSignedDocumentНормалізація на рівні документа відмовила підписаному вводу без авторизації
pcnsDocumentRewriteFailedЗазнало невдачі оточуюче переписування графа об'єктів PDF або його перевірка
pcnsResourceBudgetExceededДедлайн процесного TPdfParserResourceBudget настав раніше, ніж нормалізація завершилася

Options

FieldDescription
RemoveCommentsПропускає коментарі PDF, зберігаючи потрібні межі токенів
RequireBalancedStateВимагає збалансовані q/Q, BT/ET, marked content, сумісність, масиви та словникові області
CompressOutputДозволяє документній обгортці стискати Flate нормалізований потік сторінки, коли стиснення зменшує його розмір
SkipUnsafePagesДозволяє нормалізації на рівні документа зберегти сторінку без змін після небезпечного чи непідтримуваного результату замість переривання переписування документа
AllowSignedDocumentЯвно дозволяє повне переписування підписаного вводу, що робить недійсними наявні діапазони байтів підписів
MaxInputBytesPerPageМаксимальний сумарний розмір у байтах поданих потоків вмісту для однієї сторінки
MaxOutputBytesPerPageМаксимальні байти, дозволені в нормалізованій послідовності вмісту
MaxTokensPerPageМаксимальна кількість токенів, що перевіряються для однієї сторінки

Report fields

FieldDescription
StatusПоточний TPdfContentNormalizeStatus
SourceByteCountЗагалом байтів вихідного вмісту
OutputByteCountЗагалом байтів нормалізованого чи переписаного виводу
PageCountСторінки, перевірені нормалізацією на рівні документа
NormalizedPageCountСторінки, успішно замінені нормалізованим вмістом
SkippedPageCountНебезпечні сторінки, збережені без змін за політикою пропуску
InputStreamCountПотоки вихідного вмісту, об'єднані в логічні послідовності сторінок
OutputStreamCountСтворені нормалізовані потоки вмісту
CoalescedArrayCountБагатопотокові масиви /Contents, замінені одним нормалізованим потоком
TokenCountОброблені токени
CommentCountЗустрінуті коментарі, збережені чи видалені
InlineImageCountЗбережені повні блоки вбудованих зображень
UnknownOperatorCountНерозпізнані оператори, збережені дослівно
ErrorMessageДіагностичний текст першого збою

Inline-image offsets

See Also

FPdfCompress, TPdf.SaveAsNormalizedContent