PDFium Delphi Component Docs

FPdfContentNormalize jednotka

Jednotka: FPdfContentNormalize
Normalizace jedné logické sekvence obsahu stránky PDF se zachováním syntaxe a robustní detekce hranic inline obrázků

Syntaxe

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;

Popis

NormalizePdfContentSequence spojí dodané obsahové proudy v pořadí pole a tokenizuje výsledek jako jednu logickou sekvenci obsahu stránky

Zachovává literální řetězce, hex řetězce, názvy, pole, slovníky, payloady inline obrázků a neznámé operátory, zatímco kanonizuje oddělování tokenů; komentáře lze odstranit a strukturální vyváženost lze vyžadovat

CollectPdfContentResourceUses zaznamená názvy zdrojů konzumovaných operátory textu, XObject, grafického stavu, barevného prostoru, vzorku, stínování, vlastnosti marked-content a inline obrázku pod centrálním rozpočtem tokenů

FindInlineImageBlock najde kompletní blok BI, ID a EI, aniž by za ukončovač považoval sekvenci bajtů EI uvnitř dat payloadu obrázku

Konstanty

ConstantDescription
PdfContentNormalizeDefaultInputLimitVýchozí logický vstupní limit na stránku 256 MiB
PdfContentNormalizeDefaultOutputLimitVýchozí normalizovaný výstupní limit na stránku 256 MiB
PdfContentNormalizeDefaultTokenLimitVýchozí limit na stránku 10000000 tokenů

Funkce

FunctionDescription
TPdfContentNormalizeOptions.DefaultPovoluje odstranění komentářů, validaci vyváženosti, přínosnou kompresi Flate a přeskakování nebezpečných stránek; zakazuje podepsané přepisy a aplikuje tři výchozí limity
NormalizePdfContentSequenceVrací normalizované bajty a podrobnou zprávu, nebo False se stavem selhání a diagnostickým textem
CollectPdfContentResourceUsesVrací druh zdroje a dekódovaný název PDF pro každý operátor konzumující zdroje, nebo False s diagnostickým textem pro poškozený nebo nadlimitní vstup
FindInlineImageBlockVrací offsety dalšího kompletního bloku inline obrázku na StartPos nebo po něm

Typy

TypeDescription
TPdfContentNormalizeStatusVýsledek nebo kategorie selhání pro normalizaci sekvence a dokumentu
TPdfContentNormalizeOptionsPolitika normalizace a limity bajtů a tokenů na stránku
TPdfContentNormalizeReportStav, součty bajtů a stránek, metriky proudů a tokenů, syntax pozorování a diagnostický text
TPdfContentResourceKindHodnoty zdrojů pcrkFont, pcrkXObject, pcrkExtGState, pcrkColorSpace, pcrkPattern, pcrkShading a pcrkProperties
TPdfContentResourceUseJeden dekódovaný Name zdroje spolu s jeho Kind
TPdfContentResourceUsesDynamické pole sebraných použití zdrojů v pořadí obsahu

Stavové hodnoty

ValueMeaning
pcnsNotStartedZpráva byla inicializována, ale normalizace nedokončila
pcnsCompletedNormalizace úspěšně dokončena
pcnsInputLimitExceededLogický vstup překročil MaxInputBytesPerPage nebo nakonfigurovaný limit nebyl kladný
pcnsOutputLimitExceededNormalizované bajty by překročily MaxOutputBytesPerPage
pcnsTokenLimitExceededSekvence obsahu překročila MaxTokensPerPage
pcnsMalformedTokenToken obsahu PDF nešlo přečíst kompletně
pcnsUnresolvedInlineImageKompletní hranice payloadu inline obrázku se nenašla
pcnsUnbalancedStateVyžadovaná vyváženost rozsahů grafiky, textu, marked-content, kompatibility, pole nebo slovníku selhala
pcnsUnsupportedFilterNormalizace na úrovni dokumentu narazila na filtr obsahového proudu, který nedokáže dekódovat
pcnsEncryptedDocumentNormalizace na úrovni dokumentu odmítla šifrovaný vstup
pcnsSignedDocumentNormalizace na úrovni dokumentu odmítla podepsaný vstup bez autorizace
pcnsDocumentRewriteFailedPřepis nebo validace obklopujícího grafu objektů PDF selhala
pcnsResourceBudgetExceededTermín celoprocesového TPdfParserResourceBudget byl dosažen dřív, než normalizace dokončila

Možnosti

FieldDescription
RemoveCommentsVynechá komentáře PDF při zachování vyžadovaných hranic tokenů
RequireBalancedStateVyžaduje vyvážené rozsahy q/Q, BT/ET, marked-content, kompatibility, pole a slovníku
CompressOutputDovolí obalu na úrovni dokumentu Flate-komprimovat normalizovaný proud stránky, když komprese zmenší jeho velikost
SkipUnsafePagesDovolí normalizaci na úrovni dokumentu zachovat stránku nezměněnou po nebezpečném nebo nepodporovaném výsledku místo přerušení přepisu dokumentu
AllowSignedDocumentExplicitně povolí kompletní přepis podepsaného vstupu, což zneplatní stávající bajtové rozsahy podpisů
MaxInputBytesPerPageMaximální celkový počet bajtů napříč dodanými obsahovými proudy pro jednu stránku
MaxOutputBytesPerPageMaximální povolený počet bajtů v normalizované sekvenci obsahu
MaxTokensPerPageMaximální počet tokenů prozkoumaných pro jednu stránku

Pole zprávy

FieldDescription
StatusAktuální TPdfContentNormalizeStatus
SourceByteCountCelkový počet bajtů zdrojového obsahu
OutputByteCountCelkový počet normalizovaných nebo přepsaných výstupních bajtů
PageCountStránky prozkoumané normalizací na úrovni dokumentu
NormalizedPageCountStránky úspěšně nahrazené normalizovaným obsahem
SkippedPageCountNebezpečné stránky zachované nezměněné podle politiky přeskočení
InputStreamCountZdrojové obsahové proudy spojené do logických sekvencí stránek
OutputStreamCountVytvořené normalizované obsahové proudy
CoalescedArrayCountPole /Contents s více proudy nahrazená jediným normalizovaným proudem
TokenCountZpracované tokeny
CommentCountZaznamenané komentáře, ať zachované, nebo odstraněné
InlineImageCountKompletní bloky inline obrázků zachované
UnknownOperatorCountNerozpoznané operátory zachované doslova
ErrorMessageDiagnostický text prvního selhání

Offsety inline obrázků

Viz také

FPdfCompress, TPdf.SaveAsNormalizedContent