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