مرجع HotPDF
تحمّل THotPDF.ImportRTF ملف RTF إلى RichEdit في Windows، بينما تقسّم THotPDF.ImportRichEdit عنصر تحكم موجود إلى صفحات PDF
نموذج الرسم
يستخدم التقسيم إلى صفحات EM_FORMATRANGE بمستطيل صفحة محدود، ويُصدِر كل صفحة عبر enhanced metafile
يبقى النص وتغييرات الخط وتنسيق الفقرات والخطوط المتجهية وعمليات GDI الأخرى عوامل نص أو متجهات PDF كلما عرضتها خطوط أنابيب RichEdit وEMF بهذا الشكل
تُنقَل بيانات pict في RTF وعروض OLE الثابتة المدعومة من RichEdit عبر نفس مسار EMF، لذا لا حاجة إلى تحويل الصفحة كاملة إلى raster
الخيوط (Threading) ودورة الحياة
- استدعِ كلا الـAPI فقط على thread الواجهة الرسومية الرئيسي للعملية
- استدعِ
BeginDocقبل الاستيراد حتى تتوفر صفحة حالية - تتحكم
UseCurrentPageفيما إذا كانت أول صفحة مستوردة تعيد استخدام الصفحة الحالية أم تُلحق صفحة جديدة - يُستعاد موضع stream الـ RTF بعد قراءة محدودة
- يُستعاد موضع stream الـ RTF بعد قراءة محدودة
الخيوط (Threading) ودورة الحياة
تحدّ THPDFRTFImportOptions.Default المدخل بـ16 ميبيبايت، والنص بـ4,000,000 حرف، والإخراج بـ1,000 صفحة، وبيانات EMF المتراكمة بـ256 ميبيبايت
ينبغي قصر تفعيله على ملفات RTF الموثوقة لأن RichEdit في Windows يملك سطح معالج OLE المثبَّت، ويكون OLE المضمّن معطلًا افتراضيًا ويتطلب AllowOLE=True
يُفحص CancellationToken بين الصفحات ويُرجع risCancelled دون رسم صفحات إضافية
الخيوط (Threading) ودورة الحياة
تُبلغ THPDFRTFImportStatistics ببايتات المدخل، ونطاق الأحرف، وعدد الصفحات المرسومة والمضافة، وبايتات metafile المتراكمة، ووجود OLE، والاقتطاع، وقيمة THPDFRTFImportStatus مستقرة
يُرجع استنفاد الميزانية، وشكل الصفحة الهندسي غير الصالح، والاستدعاءات من thread خاطئ، وتقسيم الصفحات بلا تقدم، وأخطاء الرسم القيمة False مع حالة محددة
الخيوط (Threading) ودورة الحياة
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)]
);
انظر أيضًا: THotPDF.ImportRTF، THotPDF.ImportRichEdit، استيراد SVG كـForm XObject