RichEdit ve RTF Sayfalandırma İçe Aktarımı

THotPDF.ImportRTF, RTF'yi Windows RichEdit'e yükler; THotPDF.ImportRichEdit ise mevcut bir control'ü PDF sayfalarına sayfalandırır

Render modeli

Sayfalandırma, sınırlı bir sayfa dikdörtgeniyle EM_FORMATRANGE kullanır ve her sayfayı enhanced metafile üzerinden çıkarır

Metin, yazı tipi değişimleri, paragraf biçimlendirme, vektör çizgiler ve diğer GDI işlemleri, RichEdit ve EMF pipeline'ları onları bu şekilde sunduğunda PDF metni veya vektör operator'leri olarak kalır

RTF pict verisi ve RichEdit'in desteklediği statik OLE sunumları aynı EMF yoluyla taşınır; böylece tüm sayfayı rasterleştirmek gerekmez

Threading ve yaşam döngüsü

Güvenlik ve bütçeler

THPDFRTFImportOptions.Default, girdiyi 16 MiB ile, metni 4,000,000 karakterle, çıktıyı 1,000 sayfayla ve birikmiş EMF verisini 256 MiB ile sınırlar

Gömülü OLE varsayılan olarak devre dışıdır ve AllowOLE=True gerektirir; etkinleştirmek güvenilir RTF ile sınırlı tutulmalıdır, çünkü Windows RichEdit kurulu OLE handler yüzeyinin sahibidir

CancellationToken sayfalar arasında kontrol edilir ve ek sayfalar render etmeden risCancelled döndürür

Sonuç raporlama

THPDFRTFImportStatistics, girdi baytlarını, karakter aralığını, render edilen ve eklenen sayfaları, birikmiş metafile baytlarını, OLE varlığını, kesilme durumunu ve kararlı bir THPDFRTFImportStatus değerini raporlar

Bütçe tükenmesi, geçersiz sayfa geometrisi, yanlış thread'den yapılan çağrılar, ilerleme göstermeyen sayfalandırma ve render hataları belirli bir status ile False döndürür

Örnek

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

Ayrıca bkz.: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG Form XObject Import