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