|
Enhanced EMF/WMF Metafile Support
نظرة عامة
يوفر HotPDF الآن دعمًا محسّنًا بوضوح لتنسيقات Enhanced Metafile (EMF) وWindows Metafile (WMF). يتضمن التنفيذ الجديد كشف التنسيق تلقائيًا، وخيارات وضع متعددة، وتحكمًا متقدمًا في التحجيم، وجودة عرض أفضل للرسوم المتجهة داخل مستندات PDF
Key Enhancements
- كشف تلقائي لصيغ EMF/WMF ومعالجة مناسبة لكل منها
- Automatic EMF/WMF format detection and appropriate processing
- Multiple positioning options (center, top-left, custom coordinates)
- Enhanced scaling and aspect ratio control
- Direct EMF rendering for vector graphics preservation
- Bitmap conversion option for compatibility
- Improved memory management for large metafiles
- معالجة أفضل للرسومات المتجهية والنصوص المعقدة
Position Control Options
يتضمن دعم metafile المحسن خيارات وضع مرنة:
- mpCenter: توسيط الـ Metafile في الصفحة (السلوك الافتراضي)
- mpLeftTop: Metafile displayed at the top-left corner (X=0, Y=0)
- mpCustom: Metafile displayed at specified position (requires X, Y parameters)
Usage Examples
Basic Usage (Default Centered Display)
// Delphi example - Default centered display
procedure ShowMetafileDefault;
var
PDF: THotPDF;
MetaFile: TMetafile;
begin
PDF := THotPDF.Create(nil);
MetaFile := TMetafile.Create;
try
PDF.BeginDoc;
PDF.AddPage;
// Load metafile
MetaFile.LoadFromFile('diagram.emf');
// Display centered on page (default)
PDF.CurrentPage.ShowMetafile(MetaFile);
PDF.EndDoc;
finally
MetaFile.Free;
PDF.Free;
end;
end;
Position Control Usage
// Delphi example - Advanced positioning
procedure ShowMetafileAdvanced;
var
PDF: THotPDF;
MetaFile: TMetafile;
begin
PDF := THotPDF.Create(nil);
MetaFile := TMetafile.Create;
try
PDF.BeginDoc;
PDF.AddPage;
MetaFile.LoadFromFile('chart.wmf');
// Top-left corner display
PDF.CurrentPage.ShowMetafile(MetaFile, mpLeftTop);
// Custom position display
PDF.CurrentPage.ShowMetafile(MetaFile, mpCustom, 100, 200);
PDF.EndDoc;
finally
MetaFile.Free;
PDF.Free;
end;
end;
Enhanced Methods
// Delphi example - Per-call options
procedure ShowMetafileWithOptions;
var
PDF: THotPDF;
MetaFile: TMetafile;
Options: THPDFEmfOptions;
begin
PDF := THotPDF.Create(nil);
MetaFile := TMetafile.Create;
Options := THPDFEmfOptions.Create;
try
Options.EmfBitmapScale := 1;
Options.ColorImageCompression := icFlate;
Options.UseScreenReferenceDC := False;
Options.CanvasOver := True;
Options.Redraw := False;
Options.UseFrame := True;
Options.ShowNullPen := True;
Options.ShowNullBrush := True;
PDF.BeginDoc;
PDF.AddPage;
MetaFile.LoadFromFile('diagram.emf');
PDF.CurrentPage.ShowMetafile(MetaFile, mpCenter, 0, 0, Options);
PDF.EndDoc;
finally
Options.Free;
MetaFile.Free;
PDF.Free;
end;
end;
التوابع المحسّنة
ينفذ دعم EMF/WMF المحسن عبر الوحدة HPDFEmf.pas، وهي توفر:
THPDFPage.ShowMetafile Overloads
ShowMetafile(MetaFile: TMetafile) - Default centered display
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - Position control
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - Custom positioningShowMetafile(MetaFile: TMetafile; Options: THPDFEmfOptions) - خيارات عرض لكل استدعاء
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single; Options: THPDFEmfOptions) - تحكم في الموضع مع خيارات عرض لكل استدعاء
ShowMetafileEx(MetaFile: TMetafile; Options: THPDFEmfOptions) - واجهة صفحة مباشرة مع تجاوز واحد لخيارات EMF/WMF في الرسم
Enhanced Processing Methods
EnhancedShowMetafile - معالجة متقدمة بميزات محسّنة
ShowEnhancedMetafile(Page, MetaFile, Options) - مساعد عام بخيارات عرض لكل استدعاء
ShowEnhancedMetafile(Page, MetaFile, Position, X, Y, Options) - مساعد عام بالتحكم في الموضع وبخيارات عرض لكل استدعاء
ShowEnhancedMetafile(Page, FileName, Options) - مساعد باسم الملف وبخيارات عرض لكل استدعاء
EnhancedShowMetafile - Advanced processing with enhanced features
RenderEmfDirect - Direct EMF rendering for vector preservation
RenderEmfAsBitmap - Bitmap conversion for compatibility
RenderWmfAsBitmap - WMF bitmap rendering with position control
Technical Implementation
يقدّم الدعم المحسّن لـ EMF/WMF عدة دوال جديدة:
- THPDFEmfEnhanced: Core enhancement class for EMF processing
- THPDFEmfPatcher: فئة مساعدة لتحويل EMF وعرضه
- THPDFMetafilePosition: Enumeration for position control
- Enhanced EMF Record Processing: Support for advanced EMF records
THPDFPageHelper وحدّ C++
في Delphi XE2 وما بعدها، تُحقن نسخ THPDFPage.ShowMetafile وTHPDFPage.EnhancedShowMetafile المذكورة أعلاه بواسطة THPDFPageHelper، وهو class helper معلن في الوحدة HPDFEmf؛ فلا يلزم سوى إضافة HPDFEmf إلى جملة uses لاستدعائها على أي نسخة من THPDFPage
Class helpers ميزة لغوية خاصة بـ Delphi ولا يمكن الوصول إليها من C++Builder: يستخدم المستدعون من C++ الدوال المساعدة العامة ShowEnhancedMetafile(Page, MetaFile, ...) المدرجة تحت Enhanced Processing Methods بدلًا منها، تمامًا كما يفعل مثال ConvertTo
في إصدارات Delphi السابقة لـ XE2 تتاح الوظيفة نفسها كإجراءات توافق عادية تتلقى الصفحة كأول معامل: THPDFPage_ShowMetafile(Page, MetaFile) وTHPDFPage_ShowMetafile(Page, MetaFile, Position, X, Y) وTHPDFPage_EnhancedShowMetafile(Page, MetaFile) وTHPDFPage_EnhancedShowMetafile(Page, MetaFile, Position, X, Y)
مفتاح التفعيل
يحمي المتغير EmfSupportEnabled: Boolean في HPDFEmf المسارَ المحسّن، وقيمته الافتراضية True؛ وضبطه على False يجعل كل عرض metafile يتراجع إلى مسار العرض الأساسي
استدعِ EnableEnhancedEmfSupport لإعادة تشغيل المسار المحسّن بعد الاستبعاد الاختياري، وهو النمط الذي تتبعه الأمثلة قبل أول استدعاء لـ ShowMetafile
Advanced Features
EMF Record Support
- EMR_BITBLT - Bitmap operations
- EMR_STRETCHDIBITS - Stretched bitmap operations
- EMR_ALPHABLEND - Alpha blending operations
- Enhanced text rendering
- Complex path operations
Rendering Options
- Vector Preservation: Maintains vector graphics quality
- Bitmap Fallback: Automatic fallback for complex graphics
- Scaling Options: Automatic and manual scaling control
- Quality Control: Configurable rendering quality settings
- تراكب الطبقات على الـ Canvas: اضبط
THPDFEmfOptions.CanvasOver عندما ينبغي أن يُرسم محتوى الصفحة القائم فوق محتوى metafile المعاد تشغيله على الـ Canvas
- التحكم في إعادة الرسم: أبقِ
THPDFEmfOptions.Redraw ممكنًا لمسار إعادة الرسم المؤقت الافتراضي، أو عطّله لتحليل ملف metafile الأصلي مباشرة
- قص الإطار: اضبط
THPDFEmfOptions.UseFrame لقص ناتج EMF إلى إطار الترويسة عندما تعتمد ملفات metafile المستوردة على حدود الإطار
- أنماط فرش التظليل: تُحوَّل فرش Hatch في EMF/WMF إلى أنماط بلاط PDF فيحتفظ الرسم المستورد بملمس تعبئته
- تشخيص الكائنات الفارغة: أبقِ الأقلام الفارغة والفرش الفارغة غير مرئية افتراضيًا، أو اضبط
THPDFEmfOptions.ShowNullPen وTHPDFEmfOptions.ShowNullBrush عندما تحتاج التشخيصات إلى إظهار تلك المسارات أو التعبئات
Performance Optimizations
- Memory-efficient processing for large metafiles
- Optimized EMF record parsing
- Intelligent caching for repeated elements
- Reduced memory footprint during conversion
Compatibility and Standards
- Windows EMF 1.0 and Enhanced EMF support
- Windows Metafile (WMF) backward compatibility
- Cross-platform rendering consistency
- PDF vector graphics standards compliance
Troubleshooting
Common Issues and Solutions:
- ملفات Metafile الكبيرة: استخدم العرض بالصور النقطية مع الملفات الكبيرة جدًا أو المعقدة
- عرض النصوص: تأكد من توفر الخطوط على النظام المستهدف
- Complex Graphics: Consider direct EMF rendering for better quality
- Positioning Issues: Use custom positioning for precise placement
انظر أيضا
|