Impor Paginasi RichEdit dan RTF
THotPDF.ImportRTF memuat RTF ke RichEdit Windows dan THotPDF.ImportRichEdit memaginasi kontrol yang ada menjadi halaman PDF
Model rendering
Paginasi menggunakan EM_FORMATRANGE dengan persegi panjang halaman terbatas dan memancarkan setiap halaman melalui metafile yang disempurnakan
Teks, perubahan font, pemformatan paragraf, aturan vektor, dan operasi GDI lain tetap menjadi operator teks atau vektor PDF setiap kali pipeline RichEdit dan EMF mengeksposnya dengan cara itu
Data RTF pict dan presentasi OLE statis yang didukung RichEdit dibawa oleh jalur EMF yang sama, sehingga tidak diperlukan rasterisasi seluruh-halaman
Utas dan siklus hidup
- Panggil kedua API hanya pada utas utama GUI proses
- Panggil
BeginDocsebelum mengimpor sehingga halaman saat ini ada UseCurrentPagemengendalikan apakah halaman impor pertama menggunakan ulang halaman saat ini atau menambahkan halaman baru- Posisi aliran RTF dipulihkan setelah pembacaan terbatas
- Cache format RichEdit dilepaskan setelah sukses, pembatalan, atau kegagalan
Keamanan dan anggaran
THPDFRTFImportOptions.Default membatasi masukan hingga 16 MiB, teks hingga 4.000.000 karakter, keluaran hingga 1.000 halaman, dan data EMF terakumulasi hingga 256 MiB
OLE tersemat dinonaktifkan secara default dan memerlukan AllowOLE=True; mengaktifkannya harus dibatasi ke RTF tepercaya karena RichEdit Windows memiliki permukaan handler OLE yang terinstal
CancellationToken diperiksa di antara halaman dan mengembalikan risCancelled tanpa merender halaman tambahan
Pelaporan hasil
THPDFRTFImportStatistics melaporkan byte masukan, rentang karakter, halaman yang dirender dan ditambahkan, byte metafile terakumulasi, keberadaan OLE, pemotongan, dan THPDFRTFImportStatus yang stabil
Kehabisan anggaran, geometri halaman tidak valid, panggilan utas-salah, paginasi tanpa-kemajuan, dan kegagalan rendering mengembalikan False dengan status spesifik
Contoh
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)]
);
Lihat juga: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG Form XObject Import