RichEdit- och RTF-paginering
THotPDF.ImportRTF laddar RTF in i Windows RichEdit och THotPDF.ImportRichEdit pagenerar en befintlig kontroll till PDF-sidor
Renderingsmodell
Paginering använder EM_FORMATRANGE med en avgränsad sidrektangel och avger varje sida genom ett utökat metafil
Text, typsnittsbyten, styckeformatering, vektorlinjer och andra GDI-operationer förblir PDF-text- eller vektoroperatorer när RichEdit- och EMF-rörledningarna exponerar dem på det sättet
RTF-pict-data och RichEdit-stödda statiska OLE-presentationer bärs av samma EMF-sökväg, så ingen helsidesrastrering krävs
Trådning och livscykel
- Anropa båda API:erna endast på processens GUI-huvudtråd
- Anropa
BeginDocföre import så att en aktuell sida finns UseCurrentPagestyr om den första importerade sidan återanvänder den aktuella sidan eller lägger till en ny sida- RTF-strömmens läge återställs efter en avgränsad läsning
- RichEdit-formatcachen frigörs efter framgång, avbrytning eller misslyckande
Säkerhet och budgetar
THPDFRTFImportOptions.Default begränsar indata till 16 MiB, text till 4 000 000 tecken, utdata till 1 000 sidor och ackumulerad EMF-data till 256 MiB
Inbäddad OLE är inaktiverad som standard och kräver AllowOLE=True; att aktivera den bör begränsas till betrott RTF eftersom Windows RichEdit äger den installerade OLE-hanterarytan
CancellationToken kontrolleras mellan sidor och returnerar risCancelled utan att rendera ytterligare sidor
Resultatrapportering
THPDFRTFImportStatistics rapporterar indatabyten, teckenintervall, renderade och tillagda sidor, ackumulerade metafilbytes, OLE-förekomst, trunkering och en stabil THPDFRTFImportStatus
Budgetuttömning, ogiltig sidgeometri, fel-tråd-anrop, paginering utan framsteg och renderingsfel returnerar False med en specifik status
Exempel
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)]
);
Se även: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG Form XObject-import