Förbättrat stöd för EMF/WMF-metafiler

Översikt

HotPDF ger nu väsentligt förbättrat stöd för formaten Enhanced Metafile (EMF) och Windows Metafile (WMF) Den nya implementationen innehåller automatisk formatidentifiering, flera positioneringsalternativ, avancerad skalningskontroll, och förbättrad renderingskvalitet för vektorgrafik i PDF-dokument

Viktiga förbättringar

  • Automatisk identifiering av EMF/WMF-format och lämplig bearbetning
  • Flera positioneringsalternativ (centrerat, övre vänstra hörnet, egna koordinater)
  • Förbättrad skalning och kontroll av bildförhållande
  • Direkt EMF-rendering för att bevara vektorgrafik
  • Alternativ för bitmapkonvertering för kompatibilitet
  • Förbättrad minneshantering för stora metafiler
  • Bättre hantering av komplex vektorgrafik och text

Alternativ för positionskontroll

Det förbättrade metafilstödet innehåller flexibla positioneringsalternativ:

  • mpCenter: Metafil centrerad på sidan (standardbeteende)
  • mpLeftTop: Metafil visas i övre vänstra hörnet (X=0, Y=0)
  • mpCustom: Metafil visas vid angiven position (kräver parametrarna X, Y)

Användningsexempel

Grundläggande användning (standardvisning centrerad)


// Delphi-exempel - standardvisning centrerad
procedure ShowMetafileDefault;
var
  PDF: THotPDF;
  MetaFile: TMetafile;
begin
  PDF := THotPDF.Create(nil);
  MetaFile := TMetafile.Create;
  try
    PDF.BeginDoc;
    PDF.AddPage;

    // Läs in metafil
    MetaFile.LoadFromFile('diagram.emf');

    // Visa centrerad på sidan (standard)
    PDF.CurrentPage.ShowMetafile(MetaFile);

    PDF.EndDoc;
  finally
    MetaFile.Free;
    PDF.Free;
  end;
end;
        

Användning av positionskontroll


// Delphi-exempel - avancerad positionering
procedure ShowMetafileAdvanced;
var
  PDF: THotPDF;
  MetaFile: TMetafile;
begin
  PDF := THotPDF.Create(nil);
  MetaFile := TMetafile.Create;
  try
    PDF.BeginDoc;
    PDF.AddPage;

    MetaFile.LoadFromFile('chart.wmf');

    // Visa i övre vänstra hörnet
    PDF.CurrentPage.ShowMetafile(MetaFile, mpLeftTop);

    // Visa med anpassad position
    PDF.CurrentPage.ShowMetafile(MetaFile, mpCustom, 100, 200);

    PDF.EndDoc;
  finally
    MetaFile.Free;
    PDF.Free;
  end;
end;
        

Förbättrade metoder

Det förbättrade EMF/WMF-stödet introducerar flera nya metoder:

Överlagringar av THPDFPage.ShowMetafile

  • ShowMetafile(MetaFile: TMetafile) - Standardvisning centrerad
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - Positionskontroll
  • ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - Anpassad positionering

Förbättrade bearbetningsmetoder

  • EnhancedShowMetafile - Avancerad bearbetning med förbättrade funktioner
  • RenderEmfDirect - Direkt EMF-rendering för att bevara vektorer
  • RenderEmfAsBitmap - Bitmapkonvertering för kompatibilitet
  • RenderWmfAsBitmap - WMF-bitmaprendering med positionskontroll

Teknisk implementation

Det förbättrade EMF/WMF-stödet är implementerat genom enheten HPDFEmf.pas, som tillhandahåller:

  • THPDFEmfEnhanced: Central förbättringsklass för EMF-bearbetning
  • THPDFEmfPatcher: Verktygsklass för EMF-konvertering och rendering
  • THPDFMetafilePosition: Uppräkning för positionskontroll
  • Förbättrad bearbetning av EMF-poster: Stöd för avancerade EMF-poster

Avancerade funktioner

Stöd för EMF-poster

  • EMR_BITBLT - Bitmapoperationer
  • EMR_STRETCHDIBITS - Sträckta bitmapoperationer
  • EMR_ALPHABLEND - Alfablendningsoperationer
  • Förbättrad textrendering
  • Komplexa sökvägsoperationer

Renderingsalternativ

  • Bevarande av vektorer: Bevarar vektorgrafikens kvalitet
  • Bitmapreserv: Automatisk reservlösning för komplex grafik
  • Skalningsalternativ: Automatisk och manuell skalningskontroll
  • Kvalitetskontroll: Konfigurerbara inställningar för renderingskvalitet

Prestandaoptimeringar

  • Minneseffektiv bearbetning av stora metafiler
  • Optimerad parsning av EMF-poster
  • Intelligent cachelagring av upprepade element
  • Minskat minnesavtryck vid konvertering

Kompatibilitet och standarder

  • Stöd för Windows EMF 1.0 och Enhanced EMF
  • Bakåtkompatibilitet med Windows Metafile (WMF)
  • Konsekvent rendering mellan plattformar
  • Efterlevnad av standarder för PDF-vektorgrafik

Felsökning

Vanliga problem och lösningar:

  • Stora metafiler: Använd bitmaprendering för mycket stora eller komplexa metafiler
  • Textrendering: Kontrollera att teckensnitten finns på målsystemet
  • Komplex grafik: Överväg direkt EMF-rendering för bättre kvalitet
  • Positioneringsproblem: Använd anpassad positionering för exakt placering

Se även