PDFium Delphi Component Docs

FPdfContentNormalize Unit

Unit: FPdfContentNormalize
Syntaxbewahrende Normalisierung einer logischen PDF-Seiteninhalts-Sequenz und robuste Erkennung von Inline-Bildgrenzen

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;

Beschreibung

NormalizePdfContentSequence verbindet die übergebenen Inhaltsstreams in Arrayreihenfolge und tokenisiert das Ergebnis als eine logische Seiteninhalts-Sequenz

Sie bewahrt Literal-Strings, Hex-Strings, Namen, Arrays, Wörterbücher, Inline-Bild-Nutzdaten und unbekannte Operatoren und kanonisiert dabei die Token-Trennung; Kommentare können entfernt und strukturelle Ausgeglichenheit verlangt werden

CollectPdfContentResourceUses zeichnet die von Text-, XObject-, Grafikzustands-, Farbraum-, Muster-, Shading-, Marked-Content-Property- und Inline-Bild-Operatoren verbrauchten Ressourcennamen unter dem zentralen Token-Budget auf

FindInlineImageBlock findet einen vollständigen BI-, ID- und EI-Block, ohne eine EI-Bytefolge innerhalb der Bild-Nutzdaten als Abschluss zu behandeln

Konstanten

KonstanteBeschreibung
PdfContentNormalizeDefaultInputLimitStandardbegrenzung der logischen Eingabe pro Seite von 256 MiB
PdfContentNormalizeDefaultOutputLimitStandardbegrenzung der normalisierten Ausgabe pro Seite von 256 MiB
PdfContentNormalizeDefaultTokenLimitStandardbegrenzung von 10000000 Tokens pro Seite

Funktionen

FunktionBeschreibung
TPdfContentNormalizeOptions.DefaultAktiviert Kommentar-Entfernung, Balance-Validierung, sinnvolle Flate-Komprimierung und das Überspringen unsicherer Seiten; untersagt signierte Neuschreibungen und wendet die drei Standardbegrenzungen an
NormalizePdfContentSequenceGibt normalisierte Bytes und einen detaillierten Bericht zurück oder False mit Fehlerstatus und Diagnosetext
CollectPdfContentResourceUsesGibt Ressourcenart und dekodierten PDF-Namen für jeden ressourcenverbrauchenden Inhaltsoperator zurück oder False mit Diagnosetext bei fehlerhafter oder über Budget liegender Eingabe
FindInlineImageBlockGibt Offsets für den nächsten vollständigen Inline-Bildblock an oder nach StartPos zurück

Typen

TypBeschreibung
TPdfContentNormalizeStatusErgebnis- oder Fehlerkategorie für Sequenz- und Dokumentnormalisierung
TPdfContentNormalizeOptionsNormalisierungsrichtlinie und Byte- und Token-Begrenzungen pro Seite
TPdfContentNormalizeReportStatus, Byte- und Seitensummen, Stream- und Token-Kennzahlen, Syntaxbeobachtungen und Diagnosetext
TPdfContentResourceKindRessourcenwerte pcrkFont, pcrkXObject, pcrkExtGState, pcrkColorSpace, pcrkPattern, pcrkShading und pcrkProperties
TPdfContentResourceUseEinzelner dekodierter Ressourcen-Name zusammen mit seiner Kind
TPdfContentResourceUsesDynamisches Array gesammelter Ressourcennutzungen in Inhaltsreihenfolge

Statuswerte

WertBedeutung
pcnsNotStartedDer Bericht wurde initialisiert, aber die Normalisierung ist nicht abgeschlossen
pcnsCompletedDie Normalisierung wurde erfolgreich abgeschlossen
pcnsInputLimitExceededDie logische Eingabe überschritt MaxInputBytesPerPage oder eine konfigurierte Begrenzung war nicht positiv
pcnsOutputLimitExceededDie normalisierten Bytes würden MaxOutputBytesPerPage überschreiten
pcnsTokenLimitExceededDie Inhaltssequenz überschritt MaxTokensPerPage
pcnsMalformedTokenEin PDF-Inhalts-Token konnte nicht vollständig gelesen werden
pcnsUnresolvedInlineImageEine vollständige Inline-Bild-Nutzdaten-Grenze konnte nicht gefunden werden
pcnsUnbalancedStateDie erforderliche Ausgeglichenheit von Grafik-, Text-, Marked-Content-, Kompatibilitäts-, Array- oder Wörterbuchbereichen schlug fehl
pcnsUnsupportedFilterDie Dokumentnormalisierung traf auf einen Inhaltsstream-Filter, den sie nicht dekodieren kann
pcnsEncryptedDocumentDie Dokumentnormalisierung lehnte verschlüsselte Eingabe ab
pcnsSignedDocumentDie Dokumentnormalisierung lehnte signierte Eingabe ohne Autorisierung ab
pcnsDocumentRewriteFailedDie umschließende PDF-Objektgraph-Neuschreibung oder Verifikation schlug fehl
pcnsResourceBudgetExceededDie prozessweite TPdfParserResourceBudget-Frist wurde erreicht, bevor die Normalisierung abgeschlossen war

Optionen

FeldBeschreibung
RemoveCommentsLässt PDF-Kommentare weg, während erforderliche Token-Grenzen bewahrt werden
RequireBalancedStateVerlangt ausgeglichene q/Q-, BT/ET-, Marked-Content-, Kompatibilitäts-, Array- und Wörterbuchbereiche
CompressOutputErlaubt dem Dokument-Wrapper, einen normalisierten Seitenstrom mit Flate zu komprimieren, wenn die Komprimierung seine Größe verringert
SkipUnsafePagesErlaubt der Dokumentnormalisierung, eine Seite nach einem unsicheren oder nicht unterstützten Ergebnis unverändert zu bewahren, statt die Dokument-Neuschreibung abzubrechen
AllowSignedDocumentErlaubt ausdrücklich eine vollständige Neuschreibung signierter Eingabe, wodurch bestehende Signatur-Bytebereiche ungültig werden
MaxInputBytesPerPageMaximale Gesamtzahl von Bytes über die übergebenen Inhaltsstreams für eine Seite
MaxOutputBytesPerPageMaximale in der normalisierten Inhaltssequenz erlaubte Byteanzahl
MaxTokensPerPageMaximale Anzahl von Tokens, die für eine Seite untersucht werden

Berichtsfelder

FeldBeschreibung
StatusAktueller TPdfContentNormalizeStatus
SourceByteCountGesamte Quell-Inhaltsbytes
OutputByteCountGesamte normalisierte oder neu geschriebene Ausgabe-Bytes
PageCountVon der Dokumentnormalisierung inspizierte Seiten
NormalizedPageCountErfolgreich durch normalisierte Inhalte ersetzte Seiten
SkippedPageCountUnsichere Seiten, die gemäß Skip-Richtlinie unverändert bewahrt wurden
InputStreamCountZu logischen Seitensequenzen verbundene Quell-Inhaltsstreams
OutputStreamCountErzeugte normalisierte Inhaltsstreams
CoalescedArrayCountMehrfachstream-/Contents-Arrays, die durch einen einzelnen normalisierten Stream ersetzt wurden
TokenCountVerarbeitete Tokens
CommentCountAngetroffene Kommentare, ob bewahrt oder entfernt
InlineImageCountBewahrte vollständige Inline-Bildblöcke
UnknownOperatorCountWortgetreu bewahrte unbekannte Operatoren
ErrorMessageDiagnosetext für den ersten Fehler

Inline-Bild-Offsets

Siehe auch

FPdfCompress, TPdf.SaveAsNormalizedContent