RichEdit- og RTF-paginering-import
THotPDF.ImportRTF indlæser RTF i Windows RichEdit, og THotPDF.ImportRichEdit paginerer et eksisterende kontrolelement til PDF-sider
Gengivelsesmodel
Paginering bruger EM_FORMATRANGE med en afgrænset siderektangel og udsender hver side gennem et forbedret metafile
Tekst, skrifttypeændringer, afsnitsformatering, vektorlinjer og andre GDI-operationer forbliver PDF-tekst- eller vektoroperatorer, når RichEdit- og EMF-pipelinerne eksponerer dem på den måde
RTF-pict-data og RichEdit-understøttede statiske OLE-præsentationer føres gennem den samme EMF-sti, så der ikke kræves helsidens-rasterisering
Trådning og livscyklus
- Kald begge API'er kun på processens GUI-hovedtråd
- Kald
BeginDocfør import, så der findes en aktuel side UseCurrentPagestyrer, om den første importerede side genbruger den aktuelle side eller tilføjer en ny- RTF-strømens position gendannes efter en afgrænset aflæsning
- RichEdit-formatcachen frigives efter succes, annullering eller fejl
Sikkerhed og budgetter
THPDFRTFImportOptions.Default begrænser input til 16 MiB, tekst til 4 000 000 tegn, output til 1 000 sider og akkumulerede EMF-data til 256 MiB
Indlejret OLE er deaktiveret som standard og kræver AllowOLE=True; aktivering bør begrænses til betroet RTF, fordi Windows RichEdit ejer den installerede OLE-håndteringsflade
CancellationToken kontrolleres mellem sider og returnerer risCancelled uden at gengive yderligere sider
Resultatrapportering
THPDFRTFImportStatistics rapporterer inputbyte, tegnområde, gengivne og tilføjede sider, akkumulerede metafile-byte, OLE-tilstedeværelse, afkortning og en stabil THPDFRTFImportStatus
Budgetudmattelse, ugyldig sidegeometri, kald på forkert tråd, paginering uden fremskridt og gengivelsesfejl returnerer False med en specifik status
Eksempel
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 også: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG Form XObject Import