PDFium Delphi Component Docs

Omejena shramba z naključnim dostopom

Component: TPdf  ·  Unit: PDFium
Delovne podatke, ki dopuščajo premik pozicije, hrani pod klicateljem izbrano pomnilniško mejo, večjo vsebino pa preliva v zasebno začasno shrambo

Syntax

const PdfDefaultStorageMemoryLimit = 64 * 1024 * 1024;

type TPdfStorageBackend = (psbMemory, psbTemporaryFile);

constructor TPdfRandomAccessStore.Create(AMemoryLimit: Int64 = PdfDefaultStorageMemoryLimit; const ATemporaryDirectory: string = '');

destructor Destroy; override;

function Read(var Buffer; Count: Longint): Longint; override;

function Seek(Offset: Int64; Origin: TSeekOrigin): Int64; override;

function Write(const Buffer; Count: Longint): Longint; override;

function ReadAt(Offset: Int64; var Buffer; Count: Longint): Longint;

function WriteAt(Offset: Int64; const Buffer; Count: Longint): Longint;

procedure CopyToStream(Destination: TStream; BufferSize: Integer = 1048576);

procedure Flush;

procedure SpillToDisk;

property Backend: TPdfStorageBackend;

property MemoryBytes: Int64;

property MemoryLimit: Int64;

property PeakMemoryBytes: Int64;

property Spilled: Boolean;

property TemporaryDirectory: string;

property TemporaryFileName: string;

TPdf save settings

property SaveMemoryLimit: Int64;

property SaveTemporaryDirectory: string;

property LastSaveSpillCount: Integer;

property LastSaveLargestMemoryBuffer: Int64;

SaveMemoryLimitNajvečja zmogljivost rezervnega pomnilnika posamezne notranje shrambe za shranjevanje, preden ta preliva; privzeto 64 MiB
SaveTemporaryDirectoryObstoječa mapa za prelivalne datoteke; prazna vrednost uporabi začasno mapo procesa
LastSaveSpillCountŠtevilo notranjih delovnih shramb, ki so se prelile v najbolj nedavnem shranjevalnem cevovodu
LastSaveLargestMemoryBufferNajvečja posamezna zmogljivost rezervnega pomnilnika, opažena v najbolj nedavnem shranjevalnem cevovodu

Description

TPdfRandomAccessStore izhaja iz TStream in poleg pozicioniranega V/I, neodvisnega od kazalca, podpira običajno zaporedno branje, pisanje, premike in določanje velikosti

Podatki ostanejo v dinamično velikostnem pomnilniškem medpomnilniku, dokler je njihov logični konec na MemoryLimit ali pod njim

Prva operacija, ki prečka mejo, ustvari izključno začasno datoteko, enkrat prekopira obstoječe bajte, počisti pomnilniški medpomnilnik in za preostanek življenjske dobe shrambe obdrži datotečno zaledje

Začasen handle uporablja zastavici delete-on-close in naključnega dostopa, ne dopušča skupne rabe in se odstrani ob običajnem uničenju ali povrnitvi konstruktorja

Posamezne operacije serializira notranji kritični razdelek; ReadAt in WriteAt so prednostne, kadar si sočasni klicatelji ne smejo tekmovati za zaporedni kazalec

Shrambo je mogoče podati neposredno v LoadCustomDocument; blokovski povratni klici PDFium uporabljajo pozicionirana branja in ne spremenijo kazalca shrambe

TPdf nastavljeno politiko uporabi za osnovna shranjevanja, vsak delovni prostor poobdelave shranjenega dokumenta PDF in vmesne priprave za pretvorbe standardov, preverjanje, šifriranje, DSS in PAdES

Izvorno popravilo inkrementalnih xref tokov prebere okni repa in slovarja fiksne velikosti, nato pa uveljavi preverjene spremembe, medtem ko kopira nespremenjene obsege v omejenih kosih

Memory accounting

Constraints

Example

var
  Store: TPdfRandomAccessStore;
begin
  Pdf.SaveMemoryLimit := 16 * 1024 * 1024;
  Pdf.SaveTemporaryDirectory := TPath.GetTempPath;
  Pdf.SaveAs('output.pdf');
  Log(Pdf.LastSaveSpillCount, Pdf.LastSaveLargestMemoryBuffer);

  Store := TPdfRandomAccessStore.Create(4 * 1024 * 1024);
  try
    Store.CopyFrom(SourceStream, SourceStream.Size);
    Store.Position := 0;
    Pdf.LoadCustomDocument(Store, False);
  finally
    Pdf.Active := False;
    Store.Free;
  end;
end;

See Also

LoadCustomDocument, SaveAs