Suporte melhorado de metaficheiro EMF/WMF

Visão geral

O HotPDF passa agora a oferecer suporte significativamente melhorado para formatos Enhanced Metafile (EMF) e Windows Metafile (WMF). A nova implementação inclui deteção automática de formatos, várias opções de posicionamento, controlo avançado de escala e qualidade de renderização melhorada para gráficos vetoriais em documentos PDF

Melhorias principais

  • Detecção automática do formato EMF/WMF e processamento adequado
  • Várias opções de posicionamento (centro, canto superior esquerdo, coordenadas personalizadas)
  • Controlo melhorado de escala e proporção
  • Renderização directa de EMF para preservação de gráficos vectoriais
  • Opção de conversão para bitmap por motivos de compatibilidade
  • Gestão de memória melhorada para metaficheiros grandes
  • Tratamento melhor de gráficos vectoriais e texto complexos

Opções de controlo de posição

O suporte de metaficheiro melhorado inclui opções flexíveis de posicionamento

  • mpCenter: Metaficheiro centrado na página (comportamento predefinido)
  • mpLeftTop: Metaficheiro apresentado no canto superior esquerdo (X=0, Y=0)
  • mpCustom: Metaficheiro apresentado na posição especificada (requer parâmetros X, Y)

Exemplos de utilização

Utilização básica (apresentação centrada predefinida)


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

Utilização do controlo de posição


// 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étodos melhorados

O suporte EMF/WMF melhorado introduz vários métodos novos

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 positioning

Métodos de processamento melhorados

  • 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

Implementação técnica

O suporte EMF/WMF melhorado é implementado através do módulo HPDFEmf.pas, que fornece

  • THPDFEmfEnhanced: Classe central de melhoria para processamento EMF
  • THPDFEmfPatcher: Classe utilitária para conversão e renderização EMF
  • THPDFMetafilePosition: Enumeração para controlo de posição
  • Processamento melhorado de registos EMF: Suporte para registos EMF avançados

Funcionalidades avançadas

Suporte de registos EMF

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

Opções de renderização

  • Preservação vectorial: Maintains vector graphics quality
  • Alternativa bitmap: Automatic fallback for complex graphics
  • Opções de escala: Automatic and manual scaling control
  • Controlo de qualidade: Configurable rendering quality settings

Optimizações de desempenho

  • Memory-efficient processing for large metafiles
  • Optimized EMF record parsing
  • Intelligent caching for repeated elements
  • Reduced memory footprint during conversion

Compatibilidade e normas

  • Windows EMF 1.0 and Enhanced EMF support
  • Windows Metafile (WMF) backward compatibility
  • Cross-platform rendering consistency
  • PDF vector graphics standards compliance

Resolução de problemas

Problemas comuns e soluções:

  • Metaficheiros grandes: Use bitmap rendering for very large or complex metafiles
  • Renderização de texto: Ensure fonts are available on the target system
  • Gráficos complexos: Consider direct EMF rendering for better quality
  • Problemas de posicionamento: Use custom positioning for precise placement

Ver também