Uvoz paginacije RichEdit i RTF-a
THotPDF.ImportRTF učitava RTF u Windows RichEdit, a THotPDF.ImportRichEdit 'paginaira' postojeću kontrolu u PDF stranice
Model prikazivanja
Paginciranje koristi EM_FORMATRANGE s omeđenim pravokutnikom stranice i emitira svaku stranicu kroz poboljšanu metadatoteku
Tekst, promjene fontova, oblikovanje odlomaka, vektorska pravila i druge GDI operacije ostaju PDF tekst ili vektorski operatori kad god ih RichEdit i EMF cjevovodi izlažu na taj način
RTF pict podaci i statičke OLE prezentacije podržane u RichEditu prenose se istom EMF putanjom, pa nije potrebna rasterizacija cijele stranice
Niti i životni ciklus
- Oba API-ja pozivajte samo na glavnoj GUI niti procesa
- Prije uvoza pozovite
BeginDocda bi postojala trenutna stranica UseCurrentPageupravlja time ponovno koristi li prva uvezena stranica trenutnu stranicu ili pripaja novu stranicu- Položaj RTF toka vraća se nakon omeđenog čitanja
- Formatna predmemorija RichEdit-a oslobađa se nakon uspjeha, otkazivanja ili neuspjeha
Sigurnost i proračuni
THPDFRTFImportOptions.Default ograničava ulaz na 16 MiB, tekst na 4 000 000 znakova, izlaz na 1 000 stranica i akumulirane EMF podatke na 256 MiB
Ugrađeni OLE prema zadanim postavkama je onemogućen i zahtijeva AllowOLE=True; omogućavanje treba ograničiti na pouzdan RTF jer Windows RichEdit posjeduje instaliranu površinu OLE upravljača
CancellationToken provjerava se između stranica i vraća risCancelled bez prikazivanja dodatnih stranica
Izvještavanje rezultata
THPDFRTFImportStatistics izvještava o ulaznim bajtovima, rasponu znakova, prikazanim i dodanim stranicama, akumuliranim bajtovima metadatoteke, prisutnosti OLE-a, skraćivanju i stabilnom THPDFRTFImportStatus-u
Iscrpljivanje proračuna, neispravna geometrija stranice, pozivi na pogrešnoj niti, paginacija bez napretka i neuspjesi prikazivanja vraćaju False s posebnim statusom
Primjer
Options := THPDFRTFImportOptions.Default;
Options.PageWidth := 612;
Options.PageHeight := 792;
Options.MarginLeft := 54;
Options.MarginRight := 54;
Document.BeginDoc;
RTFStream.Position := 0;
if not Document.ImportRTF(RTFStream, Options, Statistics) then
raise Exception.CreateFmt(
'RTF import failed with status %d',
[Ord(Statistics.Status)]
);
Pogledajte također: THotPDF.ImportRTF, THotPDF.ImportRichEdit, Uvoz Form XObject SVG-a