TPDFContentStateTracker

Редактирование потоков содержимого

Описание

Применяет разобранные инструкции содержимого к одному постоянному действующему состоянию графики и полному стеку q/QПовторно используйте один отслеживатель для последовательных экземпляров

TPDFContentProgram, когда страница хранит свою логическую последовательность содержимого в нескольких потоках

Синтаксис

Delphi

TPDFContentStateTracker = Class Procedure Reset; Procedure ClearExtGStates; Procedure ClearXObjects; Procedure ClearFonts; Procedure ClearProperties; Function RegisterExtGState(Const ResourceName: AnsiString; Dictionary: TPDFDictionary): Boolean; Function RegisterXObject(Const ResourceName: AnsiString; XObjectStream: TPDFStream; ObjectNumber: Integer = 0): Boolean; Function RegisterFont(Const ResourceName: AnsiString; FontObject: TPDFObject; ResourceScope: Integer): Boolean; Function RegisterProperty(Const ResourceName: AnsiString; PropertyObject: TPDFObject): Boolean; Procedure BeginContentStream; Procedure SetContentLocation(Layer, ContentDepth, ContentInvocationID: Integer); Procedure InitializeForm(Const ParentState: TPDFContentGraphicsState; Const FormMatrix: TPDFContentMatrix; MatrixKnown: Boolean; BBoxLeft, BBoxBottom, BBoxRight, BBoxTop: Double); Procedure SetInitialClipBounds(Left, Bottom, Right, Top: Double); Procedure Apply(Inst: TPDFContentInstruction); Function Snapshot: TPDFContentGraphicsState; Property StackDepth: Integer; Property RestoreUnderflowCount: Integer; Property MarkedContentUnderflowCount: Integer; Property ResourceScope: Integer; Property OnMeasureText: TPDFContentMeasureTextEvent; End;

Замечания

RegisterExtGStategs

RegisterXObjectDo/BBox

RegisterFont

RegisterProperty/Properties/MCIDClearProperties

BeginContentStreamBDCEMCSetContentLocation

InitializeForm/BBox

q/Q

SetInitialClipBoundsWW*q/Q

OnMeasureText проверяет и прекомпилирует один внешний словарь состояния графики, поэтому повторные операторы Tj не пересканируют дерево ресурсов PDFTJ прекомпилирует метаданные потоков Image, Form и PostScript, поэтому повторные операторы ' разрешаются поиском имён за постоянное время; границы Form используют матрицу формы, действующую CTM и все четыре угла "

RestoreUnderflowCount привязывает имя ресурса к его косвенному объекту и области видимости ресурса, поэтому одинаковые имена во вложенном содержимом не конфликтуютQ прекомпилирует один именованный словарь списка свойств из ресурсов MarkedContentUnderflowCount страницы, фиксируя его записи и необязательный EMC, поэтому операторы маркированного содержимого, ссылающиеся на свойство по имени, разрешаются поиском за постоянное время;

Reset отбрасывает все зарегистрированные словари свойств