پشتیبانی پیشرفته از Metafileهای EMF/WMF

نمای کلی

HotPDF اکنون پشتیبانی بسیار پیشرفته‌تری برای قالب‌های Enhanced Metafile (EMF) و Windows Metafile (WMF) ارائه می‌کند پیاده‌سازی جدید شامل تشخیص خودکار قالب، چندین گزینه جای‌گذاری، کنترل پیشرفته مقیاس‌گذاری و کیفیت بهتر رندر برای گرافیک برداری در اسناد PDF است

بهبودهای اصلی

  • تشخیص خودکار قالب EMF/WMF و پردازش مناسب
  • چندین گزینه جای‌گذاری (مرکز، بالا-چپ، مختصات سفارشی)
  • کنترل بهتر مقیاس‌گذاری و نسبت تصویر
  • رندر مستقیم EMF برای حفظ گرافیک برداری
  • گزینه تبدیل به bitmap برای سازگاری
  • مدیریت حافظه بهتر برای metafileهای بزرگ
  • رسیدگی بهتر به گرافیک برداری پیچیده و متن

گزینه‌های کنترل جای‌گذاری

پشتیبانی پیشرفته از metafile گزینه‌های جای‌گذاری انعطاف‌پذیر را در بر می‌گیرد:

  • mpCenter: Metafile در مرکز صفحه قرار می‌گیرد (رفتار پیش‌فرض)
  • mpLeftTop: Metafile در گوشه بالا-چپ نمایش داده می‌شود (X=0, Y=0)
  • mpCustom: Metafile در موقعیت مشخص‌شده نمایش داده می‌شود (نیازمند پارامترهای X و Y)

نمونه‌های استفاده

استفاده پایه (نمایش پیش‌فرض در مرکز)


// 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;
        

استفاده از کنترل جای‌گذاری


// 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;
        

روش‌های پیشرفته

پشتیبانی پیشرفته EMF/WMF چند روش جدید معرفی می‌کند:

بارگذاری‌های THPDFPage.ShowMetafile

  • ShowMetafile(MetaFile: TMetafile) - نمایش پیش‌فرض در مرکز
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - کنترل جای‌گذاری
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - جای‌گذاری سفارشی

روش‌های پردازش پیشرفته

  • EnhancedShowMetafile - پردازش پیشرفته با قابلیت‌های توسعه‌یافته
  • RenderEmfDirect - رندر مستقیم EMF برای حفظ برداری
  • RenderEmfAsBitmap - تبدیل به bitmap برای سازگاری
  • RenderWmfAsBitmap - رندر bitmap برای WMF همراه با کنترل جای‌گذاری

پیاده‌سازی فنی

پشتیبانی پیشرفته EMF/WMF از طریق unit HPDFEmf.pas پیاده‌سازی شده است که این موارد را فراهم می‌کند:

  • THPDFEmfEnhanced: کلاس اصلی توسعه برای پردازش EMF
  • THPDFEmfPatcher: کلاس کمکی برای تبدیل و رندر EMF
  • THPDFMetafilePosition: شمارشگر کنترل جای‌گذاری
  • Enhanced EMF Record Processing: پشتیبانی از recordهای پیشرفته EMF

قابلیت‌های پیشرفته

پشتیبانی از EMF Record

  • EMR_BITBLT - Bitmap operations
  • EMR_STRETCHDIBITS - Stretched bitmap operations
  • EMR_ALPHABLEND - Alpha blending operations
  • Enhanced text rendering
  • Complex path operations

گزینه‌های رندر

  • Vector Preservation: کیفیت گرافیک برداری را حفظ می‌کند
  • Bitmap Fallback: بازگشت خودکار برای گرافیک پیچیده
  • Scaling Options: کنترل خودکار و دستی مقیاس‌گذاری
  • Quality Control: تنظیمات قابل‌پیکربندی برای کیفیت رندر

بهینه‌سازی‌های عملکرد

  • پردازش کم‌مصرف برای metafileهای بزرگ
  • Parser بهینه‌شده برای recordهای EMF
  • کش هوشمند برای عناصر تکراری
  • کاهش ردپای حافظه هنگام تبدیل

سازگاری و استانداردها

  • پشتیبانی از Windows EMF 1.0 و Enhanced EMF
  • سازگاری رو به عقب با Windows Metafile (WMF)
  • یکنواختی رندر میان‌سکویی
  • انطباق با استانداردهای گرافیک برداری PDF

عیب‌یابی

مشکلات رایج و راه‌حل‌ها:

  • Large Metafiles: برای metafileهای بسیار بزرگ یا پیچیده از رندر bitmap استفاده کنید
  • Text Rendering: مطمئن شوید قلم‌ها روی سیستم مقصد در دسترس هستند
  • Complex Graphics: برای کیفیت بهتر رندر مستقیم EMF را در نظر بگیرید
  • Positioning Issues: برای جای‌گذاری دقیق از موقعیت سفارشی استفاده کنید

همچنین ببینید