PDFium Component Docs

FPdfCompress unit

Unit: FPdfCompress
Streamniveau PDF-herschrijven, compressie, contentnormalisatie, optionele-contentconfiguratie, sanitatie, toegang tot de objectgraaf, incrementele revisies en versie-inspectie, gebruikt door de TPdf-save-pijplijn

Description

FPdfCompress bevat de publieke streamtransformatoren die worden gebruikt nadat PDFium een document serialiseert, plus records die elke transformator configureren en zijn resultaat rapporteren

De full-rewrite-hulpjes materialiseren de actieve objectgraaf, behouden of bouwen kruisverwijzingen doelbewust opnieuw op en wijzen invoer af die niet veilig kan worden herschreven; rapportgebaseerde procedures melden fouten via Succeeded en ErrorMessage

De meeste applicaties gebruiken de overeenkomstige TPdf-save-, inspectie- of objectgraafmethoden, terwijl de unitprocedures beschikbaar blijven voor aanroepers die al serialized PDF-streams in handen hebben

Syntax

TPdfTreeEditor = class
  class function TryLoad(Source: TStream; Kind: TPdfTreeKind;
    const RootReference: TPdfTreeObjectReference;
    const Options: TPdfTreeEditOptions; out Editor: TPdfTreeEditor;
    out Report: TPdfTreeValidationReport): Boolean; static;
  class function Load(Source: TStream; Kind: TPdfTreeKind;
    const RootReference: TPdfTreeObjectReference;
    const Options: TPdfTreeEditOptions): TPdfTreeEditor; static;
  function UpsertName(const Key, RawValue: AnsiString): Boolean;
  function UpsertNumber(Key: Int64; const RawValue: AnsiString): Boolean;
  function RemoveName(const Key: AnsiString): Boolean;
  function RemoveNumber(Key: Int64): Boolean;
  procedure Clear;
  function Validate(out Report: TPdfTreeValidationReport): Boolean;
  function BuildBalancedObjects(out Objects: TPdfTreeSerializedObjects;
    out Report: TPdfTreeValidationReport): Boolean;
  function SaveIncremental(Source, Dest: TStream;
    out Report: TPdfTreeValidationReport): Boolean;
  property Count: Integer;
  property Entries[Index: Integer]: TPdfTreeEntry; default;
end;
TPdfOutlineEditor = class
  class function TryLoad(Source: TStream;
    const Options: TPdfOutlineEditOptions; out Editor: TPdfOutlineEditor;
    out Report: TPdfOutlineValidationReport): Boolean; static;
  class function Load(Source: TStream;
    const Options: TPdfOutlineEditOptions): TPdfOutlineEditor; static;
  function Add(ParentId, SiblingIndex: Integer; const Title: WideString;
    PageNumber: Integer): Integer;
  function Delete(Id: Integer): Boolean;
  function Move(Id, NewParentId, SiblingIndex: Integer): Boolean;
  procedure SetTitle(Id: Integer; const Title: WideString);
  procedure SetStyle(Id: Integer; const Style: TPdfOutlineStyle);
  procedure SetExpanded(Id: Integer; Expanded: Boolean);
  procedure SetColor(Id: Integer; Red, Green, Blue: Single);
  procedure ClearColor(Id: Integer);
  procedure Retarget(Id, PageNumber: Integer;
    const DestinationSuffix: AnsiString = '/Fit';
    DestinationInAction: Boolean = False);
  function ApplyPageMap(const NewPageNumbers: array of Integer;
    DeleteDangling: Boolean; out Report: TPdfOutlineValidationReport): Boolean;
  function Validate(out Report: TPdfOutlineValidationReport): Boolean;
  function SaveIncremental(Source, Dest: TStream;
    out Report: TPdfOutlineValidationReport): Boolean;
  property Count: Integer;
  property Items[Index: Integer]: TPdfOutlineItem; default;
end;
TPdfCrossDocumentGraftMap = class
  constructor Create(const SourceIdentity: AnsiString);
  procedure Clear;
  function TryResolve(const Source: TPdfGraftObjectReference;
    out Destination: TPdfGraftObjectReference): Boolean;
  procedure Add(const Source, Destination: TPdfGraftObjectReference);
  property Count: Integer;
  property Entries[Index: Integer]: TPdfGraftMapEntry; default;
  property SourceIdentity: AnsiString;
end;
TPdfSparseDictionaryReader = class
  constructor Create(Source: TStream);
  function ReadDictionary(ObjectNumber, Generation: Integer;
    out Dictionary: AnsiString): Boolean;
  function ReadLatestDictionary(ObjectNumber: Integer;
    out Generation: Integer; out Dictionary: AnsiString): Boolean;
  function ReadDecodedStream(ObjectNumber, Generation,
    MaximumDecodedBytes: Integer; out Data: TBytes): Boolean;
  property Valid: Boolean;
end;
procedure CompressPdfStream(Source, Dest: TStream);
procedure LinearizePdfStream(Source, Dest: TStream);
procedure PackPdfObjectStreams(Source, Dest: TStream;
  MaxObjectsPerStream: Integer = 100;
  MaxDecodedBytesPerStream: Integer = 65536);
procedure NormalizePdfDocumentContent(Source, Dest: TStream;
  const Options: TPdfContentNormalizeOptions;
  out Report: TPdfContentNormalizeReport);
function GraftPdfAcroForm(Source, Destination, Output: TStream;
  const PageMappings: TPdfGraftPageMappings;
  const Options: TPdfAcroFormGraftOptions;
  GraftMap: TPdfCrossDocumentGraftMap;
  out Report: TPdfAcroFormGraftReport): Boolean;
procedure PruneUnreachablePdfStream(Source, Dest: TStream;
  out Report: TPdfPruneReport);
procedure PruneUnusedPdfResources(Source, Dest: TStream;
  out Report: TPdfResourcePruneReport;
  AllowSignedDocument: Boolean = False);
procedure DeduplicateResourcesPdfStream(Source, Dest: TStream;
  out Report: TPdfDedupReport);
procedure RecompressFlatePdfStream(Source, Dest: TStream;
  const Options: TPdfFlateRecompressOptions;
  out Report: TPdfFlateRecompressReport);
procedure ExternaliseInlineImagesPdfStream(Source, Dest: TStream;
  const Options: TPdfInlineImageExternaliseOptions;
  out Report: TPdfInlineImageExternaliseReport);
procedure ReproduciblePdfStream(Source, Dest: TStream;
  out Report: TPdfReproducibleReport);
procedure AppendPdfDirtyRevision(BaselineState, CurrentState,
  PreviousOutput, Dest: TStream; out ChangedObjectCount: Integer;
  out AppendedByteCount: Int64);
procedure ApplyDefaultOpenAction(Source, Dest: TStream;
  PdfVersion: Integer = 0);
procedure PageLabelledPdfStream(Source, Dest: TStream;
  const Ranges: TPdfPageLabelRanges; ReplaceExisting: Boolean;
  out Report: TPdfPageLabelReport);
procedure InspectOptionalContentPdfStream(Source: TStream;
  Usage: TPdfOptionalContentUsage; ConfigurationIndex: Integer;
  out Inventory: TPdfOptionalContentInventory);
procedure ConfigureOptionalContentPdfStream(Source, Dest: TStream;
  const Changes: TPdfOptionalContentStateChanges;
  const Options: TPdfOptionalContentConfigureOptions;
  out Report: TPdfOptionalContentConfigureReport);
procedure SanitiseActiveContentPdfStream(Source, Dest: TStream;
  const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport);
procedure SanitiseActiveContentPdfStream(Source, Dest,
  PruneWorkspace: TStream; const Options: TPdfSanitiseOptions;
  out Report: TPdfSanitiseReport);
procedure ExportPdfObjectGraph(Source, Dest: TStream;
  const Options: TPdfObjectGraphInspectOptions;
  out Report: TPdfObjectGraphReport);
procedure PatchPdfObjectGraph(Source, Dest: TStream;
  const Operations: TPdfObjectPatchOperations;
  out Report: TPdfObjectGraphReport;
  AllowSignedDocument: Boolean = False);
procedure PostProcessSavedPdf(Source, Dest: TStream;
  PdfVersion: Integer = 0);
procedure PostProcessSavedPdf(Source, Dest, NormalizedWorkspace,
  RepairedWorkspace, ValidationWorkspace: TStream;
  PdfVersion: Integer = 0);
procedure RepairSubsetToUnicodeCMaps(Source, Dest: TStream);
function ReadPdfVersionInfo(Source: TStream; out Info: TPdfVersionInfo;
  out ErrorText: string): Boolean;
function ReadPdfSparseRevisionInfo(Source: TStream;
  out Info: TPdfSparseRevisionInfo): Boolean;
function ComposePdfSparseUpdateId(Source: TStream;
  const Info: TPdfSparseRevisionInfo;
  const DocumentId, InstanceId: TBytes): AnsiString;
function ReadPdfSparseCatalogSubDict(Source: TStream;
  const Name: AnsiString; out SubDict: AnsiString): Boolean;
function ReadPdfSparsePageDictionaries(Source: TStream;
  out Pages: TPdfSparsePageDictionaries): Boolean;

Functions and procedures

CallableDescription
TPdfTreeEditor.TryLoadLaadt en valideert één indirecte NameTree of NumberTree via sparse exact-generation-opzoeking en geeft structureel bewijs terug zonder een exceptie te verhogen bij misvormde invoer
TPdfTreeEditor.LoadLaadt één boom en verhoogt een exceptie met de validatiefout wanneer de structuur niet veilig te bewerken is
TPdfTreeEditor.UpsertName en UpsertNumberVoegen één gesorteerde invoer in of vervangen die, waarbij de volledige ruwe PDF-waarde behouden blijft, inclusief indirecte verwijzingen en samengestelde objecten
TPdfTreeEditor.RemoveName, RemoveNumber en ClearVerwijderen geselecteerde invoeren of maken de boom leeg vóór deterministische rebalancing
TPdfTreeEditor.ValidateControleert sleutelvolgorde, duplicaatsleutels, ruwe waarden, invoerlimieten en de huidige editor-invarianten
TPdfTreeEditor.BuildBalancedObjectsBouwt begrensde leaf- en interne knooppunten met exacte /Limits, behoudt de root-identiteit en hergebruikt waar mogelijk compatibele geladen indirecte knooppuntverwijzingen
TPdfTreeEditor.SaveIncrementalVoegt de gebalanceerde objecten toe als geverifieerde incrementele revisie en laadt het resultaat onafhankelijk opnieuw voordat succes wordt gemeld
TPdfOutlineEditor.TryLoad en LoadLezen een outline-hiërarchie via sparse exact-generation-opzoeking, valideren ouder- en sibling-koppelingen, detecteren cycli en bewaren niet-ondersteunde destinations en actions als ondoorzichtige dictionary-invoeren
TPdfOutlineEditor.Add, Delete en MoveBewerken complete outline-subbomen via stabiele item-identificatoren met behoud van depth-first sibling-volgorde
TPdfOutlineEditor.SetTitle, SetStyle, SetExpanded, SetColor en ClearColorWerken de zichtbare outline-presentatie bij zonder niet-herkende item-dictionary-invoeren weg te gooien
TPdfOutlineEditor.RetargetWijst een één-gebaseerde expliciete paginadestination toe als directe /Dest-data of als GoTo-action met een gevalideerd destination-achtervoegsel
TPdfOutlineEditor.ApplyPageMapVerbruikt de één-gebaseerde destination-mapping die door pagina-planvalidatie is opgeleverd, werkt overlevende expliciete destinations bij en verwijdert dan的政策 of meldt dan afgebroken subtrees
TPdfOutlineEditor.SaveIncrementalBouwt root-, parent-, sibling-, child-, count-, style-, kleur- en destination-invoeren opnieuw op, voegt een incrementele revisie toe en laadt het semantische resultaat onafhankelijk opnieuw vóór succes
TPdfCrossDocumentGraftMap.CreateKoppelt herbruikbare source-naar-destination-mappingen van indirecte objecten aan één door de aanroeper aangeleverde bronidentiteit
TPdfCrossDocumentGraftMap.Add en TryResolveBewaren en resolven exacte objectnummer- en generatieparen, accepteren identieke herhalingen en wijzen conflicterende destinations af
GraftPdfAcroFormImporteert veldhiërarchieën, widgets, appearances, berekeningsvolgorde, standaardresources, actions en waarden naar gemapte destination-pagina's, voegt een sparse incrementele revisie toe en laadt het resultaat onafhankelijk opnieuw vóór succes
CompressPdfStreamComprimeert in aanmerking komende ongecomprimeerde streams met Flate en bouwt de geserialiseerde PDF-structuur opnieuw op
LinearizePdfStreamHerschikt en hernummert de actieve objectgraaf naar een linearized PDF-layout met first-page- en shared-object-hintdata
PackPdfObjectStreamsPakt in aanmerking komende non-stream-objecten in begrensde ObjStm-groepen en schrijft een cross-reference stream; beide groeperingslimieten moeten positief zijn
NormalizePdfDocumentContentNormaliseert elke paginacontentreeks met TPdfContentNormalizeOptions en geeft een documentniveau-TPdfContentNormalizeReport terug
PruneUnreachablePdfStreamHerschrijft alleen objecten die vanuit de catalogus bereikbaar zijn naar één klassieke revisie, met behoud van overlevende objectnummers en generaties
PruneUnusedPdfResourcesScant gedecodeerde contentoperatoren in pagina-, overgeërfde-, Form XObject-, pattern-, appearance- en geneste resourcescopes, verwijdert alleen ongebruikte resourcenamen, voegt een sparse revisie toe en snoeit objecten weg die onbereikbaar zijn geworden
DeduplicateResourcesPdfStreamSnoeit onbereikbare objecten weg en voegt byte-identieke font-, afbeeldings- en Form XObject-subgrafen samen
RecompressFlatePdfStreamDecodeert en hercomprimeert bereikbare FlateDecode-streams wanneer aan beide gevraagde besparingsdrempels wordt voldaan
ExternaliseInlineImagesPdfStreamVerplaatst inline-afbeeldingsblokken naar image XObjects, werkt paginasources bij en herschrijft de betrokken contentstreams
ReproduciblePdfStreamLevert deterministische uitvoer met één revisie door onbereikbare objecten weg te snoeien, Info-tijdstempels te verwijderen en de bron-/ID weg te laten
AppendPdfDirtyRevisionVergelijkt baseline- en huidige semantische momentopnamen, voegt gewijzigde of nieuwe indirecte objecten toe aan de vorige uitvoer en rapporteert toegevoegde aantallen
AppendEncryptedPdfDirtyRevisionVoegt gewijzigde of nieuwe indirecte objecten toe onder de overgeërfde encryptiecontext en valideert of vernieuwt de revisie-authenticatie
ApplyDefaultOpenActionInjecteert een first-page Fit-Height open action wanneer er geen bestaat en de gekozen PDF-versie dat toestaat, met begrensde streamvensters en sparse luie opzoeking over klassieke, xref-stream-, hybride en object-stream-revisies heen
PageLabelledPdfStreamSchrijft een /PageLabels-nummerboom in de catalogus vanuit nul-gebaseerde bereiken en vervangt optioneel een bestaande boom, met begrensde streamvensters en sparse catalogusopzoeking op het normale xref-pad
InspectOptionalContentPdfStreamLeest optional-content-groepen, configuraties, lidmaatschappen, usage-metadata en effectieve zichtbaarheid in een inventaris
ConfigureOptionalContentPdfStreamPast gevraagde groepszichtbaarheid toe op een geselecteerde configuratie en schrijft de vereiste optional-content-updates
SanitiseActiveContentPdfStreamVerwijdert geselecteerde catalogus- en trailer-invoeren met actieve content via sparse opzoeking en begrensd range-kopiëren, en kan daarna objecten snoeien die door die verwijdering onbereikbaar zijn geworden; de workspace-overload accepteert door de aanroeper eigen begrensde of op schijf ondergebrachte opslag voor de snoei-invoer
ExportPdfObjectGraphSerialiseert begrensde indirecte-objectdata als pdf-object-graph-v1-JSON met optionele encoded-stream SHA-256-digests
PatchPdfObjectGraphZet of verwijdert top-level dictionary-invoeren op basis van objectidentiteit en voegt een geverifieerde incrementele revisie toe
PostProcessSavedPdfDraait default-open-action-afhandeling, versiespecifieke normalisatie en native incrementele xref-stream-reparatie; de overload met drie afzonderlijke seekable workspaces laat aanroepers hun eigen begrensde of op schijf ondergebrachte opslagbeleid toepassen
RepairSubsetToUnicodeCMapsHerschrijft ToUnicode CMaps van subsetfonts waarvan de arrayelementen hun bfchar-invoeren tegenspreken, met gelijk lange in-place elementbewerkingen (bfchar-waarden winnen, een paar dat alleen in de high bit verschilt valt terug op de kleinste code point, elk ander conflict houdt de eerste mapping aan); documenten zonder /ToUnicode of met een xref-stream-, hybride- of object-stream-layout gaan onaangetast door, en elke volledige niet-incrementele TPdf-save past dezelfde reparatie automatisch toe
ReadPdfVersionInfoLeest header, catalogusoverride, effectieve core-versie en Adobe developer-extension-informatie
ReadPdfSparseRevisionInfoLeest begrensde feiten van de laatste revisie, catalogusbytes, objectgeneraties, xref-stijl, encryptiestatus, documentidentificatoren en tagged-structure-bewijs via de sparse objectindex
ComposePdfSparseUpdateIdFormatteert een incrementele trailer-/ID door identificatoren van de aanroeper of bron te behouden en ontbrekende waarden af te leiden via een begrensde streaming-digest
ReadPdfSparseCatalogSubDictLeest een directe of indirecte catalogus-subdictionary, zoals MarkInfo of ViewerPreferences, via de sparse objectindex
ReadPdfSparsePageDictionariesDoorloopt de actieve paginaboom via sparse klassieke, xref-stream-, hybride en object-stream-opzoeking en geeft paginadictionaries in paginaorde terug
TPdfSparseDictionaryReader.CreateBouwt één herbruikbare sparse index over een door de aanroeper eigen bronstream en meldt initialisatiesucces via Valid; de bron moet in leven blijven zolang de lezer wordt gebruikt
TPdfSparseDictionaryReader.DestroyGeeft de vastgehouden indexbuffers vrij zonder de door de aanroeper eigen bronstream vrij te geven
TPdfSparseDictionaryReader.ReadDictionaryResolveert één exact objectnummer en generatie via de vastgehouden index en geeft begrensde actieve dictionary-bytes terug
TPdfSparseDictionaryReader.ReadLatestDictionaryResolveert de actieve xref-invoer voor een objectnummer, geeft zijn generatie terug en leest zijn dictionary via de vastgehouden index
TPdfSparseDictionaryReader.ReadDecodedStreamLeest en decodeert één directe ongefilterde of enkele FlateDecode-stream met handhaving van MaximumDecodedBytes
TPdfOptionalContentConfigureOptions.DefaultKiest configuratie 0 en View-usage, verwijdert automatic-state-regels en handhaaft radiogroepen
TPdfSanitiseOptions.DefaultZet open-action-, catalogus-action-, name-tree-, associated-file- en onbereikbaar-object-verwijdering aan terwijl AcroForm en metadata behouden blijven
TPdfObjectGraphInspectOptions.DefaultGeeft limieten van 100000 objecten, diepte 32, 64 MiB uitvoer, 1 MiB strings en ingeschakelde stream-digests terug

Types

TypeDescription
TPdfTreeKindKiest een byte-gesorteerde NameTree met ptkName of een ondertekende 64-bits NumberTree met ptkNumber
TPdfTreeObjectReferenceIdentificeert één indirect boomknooppunt via ObjectNumber en Generation
TPdfTreeEntryBewaart NameKey of NumberKey plus één genormaliseerd compleet PDF-object in RawValue; TPdfTreeEntries is zijn dynamische array
TPdfTreeEditOptionsBegrenst MaxEntries, MaxNodes, MaxDepth, MaxLeafEntries en MaxKidsPerNode; Default levert conservatieve productielimieten
TPdfTreeValidationIssueEén probleem met objectbewijs en diagnostische Message; TPdfTreeValidationIssues is zijn dynamische array
TPdfTreeValidationIssueKindProbleemwaarden ptviInvalidRoot, ptviUnreadableNode, ptviCycle, ptviDepthLimit, ptviNodeLimit, ptviEntryLimit, ptviInvalidNodeShape, ptviInvalidKey, ptviInvalidValue, ptviInvalidLimits, ptviDuplicateKey, ptviUnsortedKey en ptviDeadlineExceeded
TPdfTreeValidationReportRapporteert NodeCount, EntryCount, MaximumDepth, Issues, objectbewijs, successtatus en fouttekst
TPdfTreeSerializedObjectBevat één gebalanceerde knooppuntverwijzing, complete indirecte-objectdata en of de verwijzing hergebruikt werd
TPdfTreeEditorMuteerbaar gesorteerd boommodel dat ondoorzichtige PDF-waarden bewaart en een gebalanceerde indirecte hiërarchie oplevert
TPdfOutlineStyleFlagPresentatiewaarden posItalic en posBold; TPdfOutlineStyle is hun verzameling
TPdfOutlineObjectReferenceIdentificeert een vastgehouden outline-object via objectnummer en generatie
TPdfOutlineItemBewaart stabiele identiteit, ouderidentiteit, titel, expliciete destination, action-vorm, IsOpen, stijl, HasColor, ColorRed, ColorGreen, ColorBlue en vastgehouden objectverwijzing; TPdfOutlineItems is zijn dynamische array
TPdfOutlineEditOptionsBegrenst MaxItems en hiërarchiediepte, met conservatieve standaardwaarden via Default
TPdfOutlineValidationIssueKindProbleemwaarden poviNone, poviInvalidCatalog, poviUnreadableItem, poviCycle, poviDepthLimit, poviItemLimit, poviInvalidParent, poviInvalidSibling, poviMissingTitle, poviInvalidDestination, poviInvalidPageMap, poviEncryptedInput, poviWriteFailure en poviVerificationFailure
TPdfOutlineValidationReportRapporteert IssueKind, objectbewijs, ItemCount, MaximumDepth, RemappedDestinationCount, RemovedDanglingItemCount, successtatus en fouttekst
TPdfOutlineEditorMuteerbaar depth-first outline-model met geverifieerde pagina-plan-remapping en incrementele persistentie
TPdfGraftObjectReferenceIdentificeert één bron- of destination-indirect object via exact objectnummer en generatie
TPdfCrossDocumentGraftMapHerbruikbare aan bronidentiteit gebonden objectmap, ondersteund door TPdfGraftMapEntries, die cycli en gedeelde verwijzingen bewaart en invoeren van een mislukte graft terugschuift
TPdfGraftPageMappingMapt één-gebaseerd SourcePageNumber op één-gebaseerd DestinationPageNumber voor widget-/P- en pagina-/Annots-updates
TPdfAcroFormCollisionPolicyKiest pagcpReject of pagcpRename wanneer een bron-root-veldtitel botst met een destination-root-veldtitel
TPdfAcroFormGraftOptionsStuurt CollisionPolicy, RenamePrefix, object- en recursiebudgetten en AllowSignedDestination
TPdfAcroFormGraftReportRapporteert SourceFieldCount, GraftedFieldCount, ReusedObjectCount, DestinationFieldCount, MappedPageCount, GraftedObjectCount, RenamedFieldCount, uitvoergrootte, successtatus en fouttekst
TPdfVersionInfoVersierapport met HeaderVersion, CatalogVersion, CoreVersion, AdobeBaseVersion, AdobeExtensionLevel, HasCatalogVersion, HasDeveloperExtensions en HasAdobeExtension
TPdfSparseRevisionInfoMomentopname van de laatste revisie met RootObjectNumber, RootGeneration, InfoObjectNumber, InfoGeneration, SizeValue, MaximumObjectNumber, PreviousXrefOffset, UsesXrefStream, HasEncrypt, HasDocumentId, HasTaggedStructure, FirstDocumentId, CatalogDictionary en InfoDictionary
TPdfSparseUpdateObjectEén revisie-invoer met ObjectNumber, Generation en een complete Data-body met N G obj ... endobj-bytes
TPdfSparseUpdateObjectsDynamische array van TPdfSparseUpdateObject-invoeren die door AppendPdfSparseUpdate wordt toegevoegd
TPdfSparsePageDictionaryEén actief paginaobject met ObjectNumber, Generation en begrensde Dictionary-bytes
TPdfSparsePageDictionariesDynamische array van actieve paginadictionaries in paginaboomvolgorde
TPdfSparseDictionaryReaderHerbruikbare eigenaar van een sparse klassieke, xref-stream-, hybride en object-stream-index voor herhaaldelijke exact-generation-dictionary-opzoeking zonder toewijzing op brongrootte
TPdfPruneReportBereikbaarheidsresultaat met SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, Succeeded en ErrorMessage
TPdfResourcePruneReportResource-snoeiresultaat met ScannedScopeCount, UpdatedScopeCount, RemovedNameCount, RemovedObjectCount, streamtellers, bytetotalen, successtatus en fouttekst
TPdfDedupReportDeduplicatieresultaat met SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, MergedFontCount, MergedImageCount, MergedFormXObjectCount, Succeeded en ErrorMessage
TPdfFlateRecompressOptionsVervangingsdrempels MinSavingBytes en MinSavingRatio
TPdfFlateRecompressReportRecompressieresultaat met SourceByteCount, OutputByteCount, RecompressedCount, SkippedCount, FailedCount, OriginalStreamBytes, RecompressedStreamBytes, Succeeded en ErrorMessage
TPdfInlineImageExternaliseOptionsBevat SkipUnsafePages, dat pagina's bewaart waarvan de inline-afbeeldingsgrenzen niet opgelost kunnen worden
TPdfInlineImageExternaliseReportExternalisatieresultaat met SourceByteCount, OutputByteCount, ExternalisedCount, SkippedPageCount, FailedCount, CreatedXObjectCount, Succeeded en ErrorMessage
TPdfReproducibleReportDeterministisch herschrijfresultaat met SourceByteCount, OutputByteCount, KeptObjectCount, PrunedObjectCount, StrippedTimestampCount, Succeeded en ErrorMessage
TPdfPageLabelStyleNummeringsstijlen plsNone, plsDecimal, plsUppercaseRoman, plsLowercaseRoman, plsUppercaseLetters en plsLowercaseLetters
TPdfPageLabelRangeEén labelbereik met nul-gebaseerde StartPageIndex, Style, Prefix en StartNumber
TPdfPageLabelRangesDynamische array van TPdfPageLabelRange-waarden
TPdfPageLabelReportLabel-herschrijfresultaat met SourceByteCount, OutputByteCount, AppliedRangeCount, ReplacedExistingLabels, Succeeded en ErrorMessage
TPdfOptionalContentUsageZichtbaarheidscontexten ocuView, ocuPrint, ocuExport en ocuDesign
TPdfOptionalContentStatePer-usage-statussen ocsUnspecified, ocsOn en ocsOff
TPdfOptionalContentBaseStateConfiguratiebasistatussen ocbsOn, ocbsOff en ocbsUnchanged
TPdfOptionalContentMembershipPolicyLidmaatschapsbeleiden ocmpAnyOn, ocmpAllOn, ocmpAnyOff, ocmpAllOff en ocmpUnknown
TPdfOptionalContentIntegerArrayDynamische integer-array voor optional-content-objectnummerverzamelingen
TPdfOptionalContentStringArrayDynamische AnsiString-array voor PDF-naamverzamelingen
TPdfOptionalContentWideStringArrayDynamische WideString-array voor gedecodeerde optional-content-tekst
TPdfOptionalContentRadioGroupEén wederzijds uitsluitende groep, vertegenwoordigd door GroupObjectNumbers
TPdfOptionalContentRadioGroupsDynamische array van TPdfOptionalContentRadioGroup-waarden
TPdfOptionalContentGroupOCG-record met ObjectNumber, Generation, Name, Intents, ViewState, PrintState, ExportState, PageElementSubtype, Language, LanguagePreferred, UserType, UserNames, HasZoomRange, MinimumZoom, MaximumZoom, EffectiveVisible, Locked en RadioGroupIndex
TPdfOptionalContentGroupsDynamische array van TPdfOptionalContentGroup-waarden
TPdfOptionalContentConfigurationConfiguratierecord met ObjectNumber, Generation, Name, Creator, BaseState, Intents, OnGroupObjectNumbers, OffGroupObjectNumbers, LockedGroupObjectNumbers, OrderGroupObjectNumbers, RadioGroups en HasAutomaticState
TPdfOptionalContentConfigurationsDynamische array van TPdfOptionalContentConfiguration-waarden
TPdfOptionalContentMembershipOCMD-record met ObjectNumber, Generation, GroupObjectNumbers, Policy, VisibilityExpression en EffectiveVisible
TPdfOptionalContentMembershipsDynamische array van TPdfOptionalContentMembership-waarden
TPdfOptionalContentInventoryInspectieresultaat met Usage, SelectedConfigurationIndex, Groups, Configurations, Memberships, Succeeded en ErrorMessage
TPdfOptionalContentStateChangeGevraagde Visible-status voor één GroupObjectNumber
TPdfOptionalContentStateChangesDynamische array van TPdfOptionalContentStateChange-waarden
TPdfOptionalContentConfigureOptionsGeselecteerde configuratie en usage plus de schakelaars DisableAutomaticState en EnforceRadioGroups
TPdfOptionalContentConfigureReportConfiguratieresultaat met SourceByteCount, OutputByteCount, GroupCount, ChangedGroupCount, UpdatedUsageStateCount, SelectedConfigurationIndex, RemovedAutomaticState, Succeeded en ErrorMessage
TPdfSanitiseOptionsOnafhankelijke schakelaars StripOpenAction, StripCatalogActions, StripNames, StripAssociatedFiles, StripAcroForm, StripMetadata en RemoveUnreachable
TPdfSanitiseReportSanitatieresultaat met SourceByteCount, OutputByteCount, StrippedEntryCount, PrunedObjectCount, geneste PruneReport, Succeeded en ErrorMessage
TPdfObjectGraphInspectOptionsBegrenst de JSON-export met MaxObjects, MaxDepth, MaxOutputBytes, MaxStringBytes en IncludeStreamDigests
TPdfObjectGraphReportGedeeld export- en patchresultaat met SourceByteCount, OutputByteCount, ObjectCount, ExportedObjectCount, PatchedObjectCount, AppliedOperationCount, Truncated, Succeeded en ErrorMessage
TPdfObjectPatchOperationKindPatchacties popSet en popRemove
TPdfObjectPatchValueKindWaardesoorten povNull, povBoolean, povInteger, povReal, povName, povTextString en povReference
TPdfObjectPatchValueGetagdewaarde met Kind, BooleanValue, IntegerValue, RealValue, TextValue, ReferenceObjectNumber en ReferenceGeneration
TPdfObjectPatchOperationEén bewerking met Kind, ObjectNumber, Generation, Key en Value
TPdfObjectPatchOperationsDynamische array van TPdfObjectPatchOperation-waarden

Safety and limits

TPdfOutlineEditor.SetUri vervangt een destination door een UTF-8 URI-actie en codeert letterlijke scheidingstekens veilig; save-verificatie negeert de uitgeklapte status van bladitems omdat PDF hun branch Count weglaat

De options-overload van GraftPdfAcroForm ondersteunt pagcpReject, pagcpRename, pagcpNamespace en het samenvoegen van compatibele terminale tekst- en keuzevelden met pruning van geselecteerde widgets, geisoleerde resources, appearances en berekeningsorde; zie FPdfFormMerge voor beleid en transactionele documentintegratie

AcroForm-botsingsrapporten

TPdfAcroFormGraftOptions.NamespacePrefix benoemt de parent die door het namespace-beleid wordt ingevoegd; TPdfAcroFormCollisionPolicy.pagcpMergeCompatible voegt ondersteunde compatibele terminale tekst- of keuzevelden samen

TPdfAcroFormGraftReport.FilteredFieldCount en TPdfAcroFormGraftReport.FilteredWidgetCount tellen bronvermeldingen die door filtering op geselecteerde paginas zijn verwijderd; TPdfAcroFormGraftReport.ResourceRenameCount telt geisoleerde standaardresourcenamen en TPdfAcroFormGraftReport.MergedFieldCount telt compatibele velden die aan een bestaande owner zijn gekoppeld

CapturePdfNavigation en WritePdfNavigation leggen benoemde destinations en paginalink-annotaties vast en remappen die met expliciete owner-paginamappingen; zie FPdfMerge voor raw key-semantiek, destinationparameters, limieten en transactionele integratie

Navigatie-capturerecords

TPdfNavigationNamedDestination= record
    // Keep the original PDF string bytes, including a UTF-16 BOM when present
    NameKey: AnsiString;
    // Absolute one-based page number; zero denotes an unresolved target
    PageNumber: Integer;
    // Exact destination mode and parameters, including null values
    DestinationSuffix: AnsiString;
  end;
  TPdfNavigationNamedDestinations= array of TPdfNavigationNamedDestination;
  TPdfNavigationPageLink= record
    // Owner page is one-based; annotation and link-only ordinals are zero-based
    PageNumber, AnnotationIndex, LinkIndex: Integer;
    HasDestination, HasGotoAction: Boolean;
    DestinationPageNumber, ActionPageNumber: Integer;
    DestinationSuffix, ActionSuffix: AnsiString;
  end;
  TPdfNavigationPageLinks= array of TPdfNavigationPageLink;

Actieve objectwaarden lezen

ReadPdfActiveObjects geeft de nieuwste actieve objectwaarden terug met hun exacte generatienummers en de actieve catalogusrevisie, en resolveert klassieke xref-tabellen, xref-streams, incrementele revisies en gecomprimeerde object-streamleden

Body sluit de indirect-object-header en de endobj-marker uit; gewone streams behouden hun dictionary en gecodeerde payload, terwijl gecomprimeerde leden als gewone waarden worden gematerialiseerd, en xref-/object-streaminfrastructuur wordt uitgesloten van de teruggegeven collectie

De bronpositie wordt hersteld en een fout geeft een lege objectcollectie met diagnostiek terug; versleutelde invoer wordt afgewezen, terwijl handtekeningen kunnen worden geinspecteerd zonder hun bytes te wijzigen

Standaardwaarden staan 256 MiB bronbytes toe, 64 MiB per gematerialiseerd body, 256 MiB cumulatieve bodies, 64 MiB per gedecodeerde object-stream, 256 MiB cumulatieve caches van gedecodeerde object-streams en 1,000,000 objectnummer-slots

Body-limieten worden gecontroleerd voordat elk body wordt gekopieerd en tellen tijdelijke infrastructuur-bodies mee naast teruggegeven waarden; de afzonderlijk benoemde limieten voor de decodeercache stoppen het decoderen van object-streams voordat het budget van de aanroeper wordt overschreden

Dit zijn logische bufferlimieten, geen procesbrede geheugenlimiet: bronkopieen, de staging-stream voor directe objecten, scanbuffers, werkopslag van de decoder en objectmetadata verbruiken extra begrensde toewijzingen, en scanbuffers kunnen behouden bodies dupliceren

type
  TPdfActiveObject = record
    ObjectNumber, Generation: Integer;
    Body: TBytes;
  end;
  TPdfActiveObjects = array of TPdfActiveObject;
  TPdfActiveObjectReadOptions = record
    MaxSourceBytes, MaxObjectBytes, MaxTotalObjectBytes: Int64;
    MaxDecodedObjectStreamBytes, MaxTotalDecodedObjectStreamBytes: Int64;
    MaxObjects: Integer;
    class function Default: TPdfActiveObjectReadOptions; static;
  end;

function ReadPdfActiveObjects(Source: TStream;
  const Options: TPdfActiveObjectReadOptions; out Objects: TPdfActiveObjects;
  out Revision: TPdfSparseRevisionInfo; out ErrorText: string): Boolean;

See Also

FPdfContentNormalize, TPdf.SaveAs, TPdf.SaveAsNormalizedContent, TPdf.InspectOptionalContent, TPdf.ObjectGraph, ReadPdfVersionInfo