Import podziału na strony z RichEdit i RTF

THotPDF.ImportRTF ładuje RTF do Windows RichEdit, a THotPDF.ImportRichEdit dzieli istniejącą kontrolkę na strony PDF

Model renderowania

Podział na strony używa EM_FORMATRANGE z ograniczonym prostokątem strony i emituje każdą stronę przez enhanced metafile

Tekst, zmiany fontów, formatowanie akapitów, linie wektorowe i inne operacje GDI pozostają tekstem lub operatorami wektorowymi PDF, gdy pipeline'y RichEdit i EMF wystawiają je w ten sposób

Dane pict RTF i statyczne prezentacje OLE obsługiwane przez RichEdit są przenoszone tą samą ścieżką EMF, więc rasterizacja całej strony nie jest potrzebna

Wątki i cykl życia

Bezpieczeństwo i budżety

THPDFRTFImportOptions.Default ogranicza wejście do 16 MiB, tekst do 4 000 000 znaków, wyjście do 1 000 stron, a narastające dane EMF do 256 MiB

OLE osadzone jest domyślnie wyłączone i wymaga AllowOLE=True; włączaj je tylko dla zaufanego RTF, bo Windows RichEdit wystawia powierzchnię zainstalowanych handlerów OLE

CancellationToken jest sprawdzany między stronami i zwraca risCancelled bez renderowania kolejnych stron

Raportowanie wyniku

THPDFRTFImportStatistics raportuje bajty wejścia, zakres znaków, strony wyrenderowane i dodane, narastające bajty metafile, obecność OLE, ucięcie i stabilny THPDFRTFImportStatus

Wyczerpanie budżetu, nieprawidłowa geometria strony, wywołania z niewłaściwego wątku, podział bez postępu i porażki renderowania zwracają False ze specyficznym statusem

Przykład

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)]
  );

Zobacz też: THotPDF.ImportRTF, THotPDF.ImportRichEdit, Import Form XObject z SVG