PDFium Delphi Component Docs

модул FPdfContentNormalize

Модул: FPdfContentNormalize
Нормализация със запазване на синтаксиса на една логическа последователност от PDF странично съдържание и устойчиво откриване на границите на inline изображения

Синтаксис

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;

Описание

NormalizePdfContentSequence съединява подадените съдържателни потоци в подредбата на масива и токенизира резултата като една логическа последователност от странично съдържание

Запазва literal низове, hex низове, имена, масиви, речници, полезните данни на inline изображения и неизвестните оператори, като същевременно канонизира разделянето на токени; коментарите могат да се премахнат и може да се изиска структурен баланс

CollectPdfContentResourceUses записва имената на ресурсите, консумирани от операторите за текст, XObject, graphics state, цветово пространство, pattern, shading, свойство на маркирано съдържание и inline изображение, под централния бюджет за токени

FindInlineImageBlock намира пълен блок BI, ID и EI, без да приема байтова последователност EI вътре в полезните данни на изображението за терминатор

Константи

ConstantОписание
PdfContentNormalizeDefaultInputLimitЛимит по подразбиране за логически вход на страница от 256 MiB
PdfContentNormalizeDefaultOutputLimitЛимит по подразбиране за нормализиран изход на страница от 256 MiB
PdfContentNormalizeDefaultTokenLimitЛимит по подразбиране на страница от 10000000 токена

Функции

FunctionОписание
TPdfContentNormalizeOptions.DefaultВключва премахването на коментари, валидиране на баланса, полезна Flate компресия и прескачане на опасни страници; забранява подписани пренаписвания и прилага трите лимита по подразбиране
NormalizePdfContentSequenceВръща нормализирани байтове и подробен доклад, или False със статус на неуспех и диагностичен текст
CollectPdfContentResourceUsesВръща вида на ресурса и декодираното PDF име за всеки оператор, консумиращ ресурси, или False с диагностичен текст при malformed или над-бюджетен вход
FindInlineImageBlockВръща отместванията за следващия пълен блок inline изображение на или след StartPos

Типове

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

Стойности на статуса

ValueЗначение
pcnsNotStartedДокладът е инициализиран, но нормализацията не е завършила
pcnsCompletedНормализацията завърши успешно
pcnsInputLimitExceededЛогическият вход надхвърли MaxInputBytesPerPage или конфигуриран лимит не беше положителен
pcnsOutputLimitExceededНормализираните байтове биха надхвърлили MaxOutputBytesPerPage
pcnsTokenLimitExceededСъдържателната последователност надхвърли MaxTokensPerPage
pcnsMalformedTokenЕдин PDF съдържателен токен не можа да бъде прочетен докрай
pcnsUnresolvedInlineImageНе беше намерена пълна граница на полезните данни на inline изображение
pcnsUnbalancedStateПровали се изискваният баланс на областите graphics, text, marked content, съвместимост, масив или речник
pcnsUnsupportedFilterНормализацията на ниво документ срещна филтър на съдържателен поток, който не може да декодира
pcnsEncryptedDocumentНормализацията на ниво документ отказа криптиран вход
pcnsSignedDocumentНормализацията на ниво документ отказа подписан вход без оторизиране
pcnsDocumentRewriteFailedПренаписването или верификацията на обхващащия PDF обектен граф се провали
pcnsResourceBudgetExceededКрайният срок на процес-широкия TPdfParserResourceBudget настъпи, преди нормализацията да приключи

Опции

ПолеОписание
RemoveCommentsПропуска PDF коментарите, като запазва нужните граници между токени
RequireBalancedStateИзисква балансирани области q/Q, BT/ET, marked content, съвместимост, масив и речник
CompressOutputПозволява на обвивката на ниво документ да Flate-компресира нормализиран страничен поток, когато компресията намалява размера му
SkipUnsafePagesПозволява на нормализацията на ниво документ да запази страница непроменена след опасен или неподдържан резултат, вместо да прекрати пренаписването на документа
AllowSignedDocumentИзрично разрешава пълно пренаписване на подписан вход, което обезсмисля съществуващите байтови диапазони на подписите
MaxInputBytesPerPageМаксимум общи байтове през подадените съдържателни потоци за една страница
MaxOutputBytesPerPageМаксимум байтове, позволени в нормализираната съдържателна последователност
MaxTokensPerPageМаксимум токени, прегледани за една страница

Полета на доклада

ПолеОписание
StatusТекущ TPdfContentNormalizeStatus
SourceByteCountОбщо байтове на source съдържанието
OutputByteCountОбщо байтове на нормализирания или пренаписания изход
PageCountСтраници, прегледани от нормализацията на ниво документ
NormalizedPageCountСтраници, успешно заменени с нормализирано съдържание
SkippedPageCountОпасни страници, запазени непроменени при политика на пропускане
InputStreamCountSource съдържателни потоци, съединени в логически странични последователности
OutputStreamCountПроизведени нормализирани съдържателни потоци
CoalescedArrayCountМного-поточни масиви /Contents, заменени с един нормализиран поток
TokenCountОбработени токени
CommentCountСрещнати коментари, независимо дали са запазени или премахнати
InlineImageCountЗапазени пълни блокове inline изображения
UnknownOperatorCountНеразпознати оператори, запазени дословно
ErrorMessageДиагностичен текст за първия неуспех

Отмествания на inline изображения

Виж също

FPdfCompress, TPdf.SaveAsNormalizedContent