Uvoz paginacije RichEdit i RTF
THotPDF.ImportRTF učitava RTF u Windows RichEdit, a THotPDF.ImportRichEdit paginira postojeću kontrolu u PDF stranice
Model renderovanja
Paginacija koristi EM_FORMATRANGE sa ograničenim pravougaonikom stranice i emituje svaku stranicu kroz poboljšani metafajl
Tekst, promene fontova, formatiranje pasusa, vektorske linije i druge GDI operacije ostaju PDF tekstualni ili vektorski operatori kad god ih RichEdit i EMF cevovodi tako izlažu
RTF pict podaci i statičke OLE prezentacije koje podržava RichEdit prenose se istom EMF putanjom, tako da nije potrebna rasterizacija cele stranice
Niti i životni ciklus
- Pozivajte oba API-ja samo na glavnoj GUI niti procesa
- Pozovite
BeginDocpre uvoza tako da postoji trenutna stranica UseCurrentPagekontroliše da li prva uvezena stranica ponovo koristi trenutnu stranicu ili dodaje novu- Pozicija RTF toka se vraća nakon ograničenog čitanja
- Keš formata RichEdit se oslobađa nakon uspeha, otkazivanja ili neuspeha
Bezbednost i budžeti
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 je podrazumevano onemogućen i zahteva AllowOLE=True; njegovo omogućavanje treba ograničiti na pouzdani RTF jer Windows RichEdit poseduje instaliranu površinu OLE rukovalaca
CancellationToken se proverava između stranica i vraća risCancelled bez renderovanja dodatnih stranica
Izveštavanje o rezultatima
THPDFRTFImportStatistics prijavljuje ulazne bajtove, opseg znakova, renderovane i dodate stranice, akumulirane bajtove metafajla, prisustvo OLE-a, skraćivanje i stabilni THPDFRTFImportStatus
Iscrpljenost budžeta, nevažeća geometrija stranice, pozivi sa pogrešne niti, paginacija bez napretka i neuspesi renderovanja vraćaju False sa specifičnim statusom
Primer
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 i: THotPDF.ImportRTF, THotPDF.ImportRichEdit, Uvoz SVG Form XObject-a