|
Verbeterde EMF/WMF-metafileondersteuning
Overzicht
HotPDF biedt nu aanzienlijk verbeterde ondersteuning voor Enhanced Metafile (EMF) en Windows Metafile (WMF)
De nieuwe implementatie bevat automatische formaatdetectie, meerdere positioneringsopties, geavanceerde schaalregeling
en betere renderkwaliteit voor vectorafbeeldingen in PDF-documenten
Belangrijkste verbeteringen
- Automatische detectie van EMF/WMF-formaat en passende verwerking
- Meerdere positioneringsopties (centreren, linksboven, aangepaste coördinaten)
- Verbeterde schaalregeling en aspectratio-bewaking
- Directe EMF-rendering om vectorafbeeldingen te behouden
- Bitmapconversieoptie voor compatibiliteit
- Verbeterd geheugenbeheer voor grote metafiles
- Betere afhandeling van complexe vectorafbeeldingen en tekst
Positioneringsopties
De verbeterde metafile-ondersteuning bevat flexibele positioneringsopties:
- mpCenter: Metafile gecentreerd op de pagina (standaardgedrag)
- mpLeftTop: Metafile weergegeven in de linkerbovenhoek (X=0, Y=0)
- mpCustom: Metafile weergegeven op een opgegeven positie (vereist X-, Y-parameters)
Usage Examples
Basisgebruik (standaard gecentreerde weergave)
// Delphi-voorbeeld - Standaard gecentreerde weergave
procedure ShowMetafileDefault;
var
PDF: THotPDF;
MetaFile: TMetafile;
begin
PDF := THotPDF.Create(nil);
MetaFile := TMetafile.Create;
try
PDF.BeginDoc;
PDF.AddPage;
// Metafile laden
MetaFile.LoadFromFile('diagram.emf');
// Gecentreerd op de pagina weergeven (standaard)
PDF.CurrentPage.ShowMetafile(MetaFile);
PDF.EndDoc;
finally
MetaFile.Free;
PDF.Free;
end;
end;
Gebruik van positioneringsregeling
// Delphi-voorbeeld - Geavanceerde 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');
// Weergave linksboven
PDF.CurrentPage.ShowMetafile(MetaFile, mpLeftTop);
// Weergave op aangepaste positie
PDF.CurrentPage.ShowMetafile(MetaFile, mpCustom, 100, 200);
PDF.EndDoc;
finally
MetaFile.Free;
PDF.Free;
end;
end;
Uitgebreide methoden
De verbeterde EMF/WMF-ondersteuning introduceert meerdere nieuwe methoden:
THPDFPage.ShowMetafile-overloads
ShowMetafile(MetaFile: TMetafile) - Standaard gecentreerde weergave
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - Positioneringsregeling
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - Aangepaste positionering
Uitgebreide verwerkingsmethoden
EnhancedShowMetafile - Geavanceerde verwerking met uitgebreide functies
RenderEmfDirect - Directe EMF-rendering voor vectorbehoud
RenderEmfAsBitmap - Bitmapconversie voor compatibiliteit
RenderWmfAsBitmap - WMF-bitmaprendering met positioneringsregeling
Technische implementatie
De verbeterde EMF/WMF-ondersteuning is geïmplementeerd via de HPDFEmf.pas-unit, die het volgende biedt:
- THPDFEmfEnhanced: Kernklasse voor EMF-verwerking
- THPDFEmfPatcher: Hulpkklasse voor EMF-conversie en rendering
- THPDFMetafilePosition: Enumeratie voor positioneringsregeling
- Enhanced EMF Record Processing: Ondersteuning voor geavanceerde EMF-records
Geavanceerde functies
Ondersteuning voor EMF-records
- EMR_BITBLT - Bitmapbewerkingen
- EMR_STRETCHDIBITS - Uitgerekte bitmapbewerkingen
- EMR_ALPHABLEND - Alfablendbewerkingen
- Verbeterde tekstweergave
- Complexe padbewerkingen
Renderopties
- Vectorbehoud: Houdt de kwaliteit van vectorafbeeldingen vast
- Bitmapfallback: Automatische fallback voor complexe afbeeldingen
- Schaalopties: Automatische en handmatige schaalregeling
- Kwaliteitsregeling: Instelbare kwaliteitsopties voor rendering
Prestatie-optimalisaties
- Geheugenefficiënte verwerking van grote metafiles
- Geoptimaliseerde parsing van EMF-records
- Intelligente caching voor herhaalde elementen
- Verkleinde geheugenvoetafdruk tijdens conversie
Compatibiliteit en standaarden
- Ondersteuning voor Windows EMF 1.0 en Enhanced EMF
- Terugwaartse compatibiliteit met Windows Metafile (WMF)
- Consistente rendering op meerdere platforms
- Naleving van PDF-standaarden voor vectorafbeeldingen
Probleemoplossing
Veelvoorkomende problemen en oplossingen:
- Grote metafiles: Gebruik bitmaprendering voor zeer grote of complexe metafiles
- Tekstrendering: Zorg dat lettertypen beschikbaar zijn op het doelsysteem
- Complexe afbeeldingen: Overweeg directe EMF-rendering voor betere kwaliteit
- Positioneringsproblemen: Gebruik aangepaste positionering voor nauwkeurige plaatsing
Zie ook
|