PDFium Delphi Component Docs

Rajattu satunnaiskäyttöinen tallennus

Komponentti: TPdf  ·  Yksikkö: PDFium
Pitää hakukelpoisen työdatan kutsujan valitseman muistikaton alla ja siirtää suuremman sisällön yksityiseen väliaikaistallennukseen

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;

SaveMemoryLimitKunkin sisäisen tallennustaustamuistin enimmäiskapasiteetti ennen levylle siirtoa; oletus on 64 MiB
SaveTemporaryDirectoryOlemassa oleva hakemisto, jota käytetään siirtotiedostoille; tyhjä arvo käyttää prosessin väliaikaishakemistoa
LastSaveSpillCountNiiden sisäisten työmuistien määrä, jotka siirtyivät levylle viimeisimmän tallennusputken aikana
LastSaveLargestMemoryBufferSuurin yksittäinen taustamuistikapasiteetti, joka havaittiin viimeisimmän tallennusputken aikana

Description

TPdfRandomAccessStore on TStream-luokan aliluokka ja tukee tavallisten peräkkäisten lukujen, kirjoitusten, hakujen ja koonmuutosten lisäksi kurssiriippumattomia positioituja I/O-operaatioita

Data pysyy dynaamisesti kasvavassa muistipuskurissa, kunhan sen looginen loppu pysyy MemoryLimit-rajan alapuolella tai tasalla

Ensimmäinen katon ylittävä operaatio luo yksinoikeudellisen väliaikaistiedoston, kopioi olemassa olevat tavut kerran, tyhjentää muistipuskurin ja pitää tiedostotaustan käytössä tallennuksen loppuiän ajan

Väliaikainen kahva käyttää delete-on-close- ja satunnaiskäyttölippuja, ei salli jakamista ja poistetaan normaalissa tuhoamisessa tai konstruktorin peruutuksessa

Yksittäiset operaatiot sarjoitetaan sisäisellä kriittisellä osalla; ReadAt- ja WriteAt-kutsut ovat suositellut, kun rinnakkaiset kutsujat eivät saa kilpailla peräkkäisestä kurssorista

Tallennus voidaan antaa suoraan LoadCustomDocument-kutsulle; PDFiumin lohkopalauteet käyttävät positioituja lukuja eivätkä muuta tallennuksen kurssoria

TPdf käyttää määritettyä käytäntöä perustallennuksiin, jokaiseen tallennetun PDF:n jälkikäsittelytyötilaan sekä välivaiheisiin standardsisällön muunnoissa, validoinneissa, salauksissa sekä DSS- ja PAdES-välityksissä

Natiivi inkrementaalinen xref-virran korjaus lukee kiinteän kokoisia häntä- ja sanakirjaikkunoita ja soveltaa validoidut muutokset kopioidessaan muuttumattomia alueita rajatuissa osissa

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