Enhanced EMF/WMF Metafile Support

Vue d’ensemble

HotPDF fournit désormais une prise en charge nettement améliorée des formats Enhanced Metafile (EMF) et Windows Metafile (WMF) La nouvelle implémentation ajoute la détection automatique du format, plusieurs options de positionnement, un contrôle avancé de l’échelle et une meilleure qualité de rendu pour les graphiques vectoriels dans les documents PDF

Améliorations principales

  • Détection automatique du format EMF/WMF et traitement approprié
  • Plusieurs options de positionnement (centré, coin supérieur gauche, coordonnées personnalisées)
  • Contrôle amélioré de l’échelle et du ratio d’aspect
  • Rendu EMF direct pour préserver les graphiques vectoriels
  • Option de conversion en bitmap pour la compatibilité
  • Meilleure gestion mémoire pour les gros métafiles
  • Meilleure prise en charge des graphiques vectoriels complexes et du texte

Options de contrôle du positionnement

La prise en charge améliorée des métafiles inclut des options de positionnement flexibles :

  • mpCenter: Métafile centré sur la page (comportement par défaut)
  • mpLeftTop: Métafile affiché dans le coin supérieur gauche (X=0, Y=0)
  • mpCustom: Métafile affiché à la position spécifiée (paramètres X et Y requis)

Exemples d’utilisation

Utilisation de base (affichage centré par défaut)


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

Utilisation du contrôle de position


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

Méthodes améliorées

La prise en charge EMF/WMF améliorée introduit plusieurs nouvelles méthodes :

Surcharges de THPDFPage.ShowMetafile

  • ShowMetafile(MetaFile: TMetafile) - Affichage centré par défaut
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - Contrôle du positionnement
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - Positionnement personnalisé

Méthodes de traitement améliorées

  • EnhancedShowMetafile - Traitement avancé avec fonctions améliorées
  • RenderEmfDirect - Rendu EMF direct pour préserver les vecteurs
  • RenderEmfAsBitmap - Conversion en bitmap pour la compatibilité
  • RenderWmfAsBitmap - Rendu bitmap WMF avec contrôle du positionnement

Implémentation technique

La prise en charge EMF/WMF améliorée est implémentée dans l’unité HPDFEmf.pas, qui fournit :

  • THPDFEmfEnhanced: Classe centrale d’amélioration pour le traitement EMF
  • THPDFEmfPatcher: Classe utilitaire pour la conversion et le rendu EMF
  • THPDFMetafilePosition: Énumération pour le contrôle du positionnement
  • Enhanced EMF Record Processing: Prise en charge des enregistrements EMF avancés

Fonctions avancées

Prise en charge des enregistrements EMF

  • EMR_BITBLT - Opérations bitmap
  • EMR_STRETCHDIBITS - Opérations bitmap étirées
  • EMR_ALPHABLEND - Opérations de fusion alpha
  • Rendu du texte amélioré
  • Opérations de chemins complexes

Options de rendu

  • Préservation des vecteurs: Conserve la qualité des graphiques vectoriels
  • Solution de secours bitmap: Repli automatique pour les graphiques complexes
  • Options d’échelle: Contrôle automatique et manuel de l’échelle
  • Contrôle qualité: Paramètres de qualité de rendu configurables

Optimisations de performance

  • Traitement économe en mémoire pour les grands métafiles
  • Analyse optimisée des enregistrements EMF
  • Mise en cache intelligente pour les éléments répétés
  • Empreinte mémoire réduite pendant la 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:

  • Large Metafiles: Use bitmap rendering for very large or complex metafiles
  • Text Rendering: Ensure fonts are available on the target system
  • Complex Graphics: Consider direct EMF rendering for better quality
  • Positioning Issues: Use custom positioning for precise placement

Voir aussi