|
Suport îmbunătățit pentru metafile EMF/WMF
Prezentare generală
HotPDF oferă acum suport mult îmbunătățit pentru formatele Enhanced Metafile (EMF) și Windows Metafile (WMF). Noua implementare include detectarea automată a formatului, mai multe opțiuni de poziționare, control avansat al scalării și o calitate îmbunătățită a randării pentru grafică vectorială în documentele PDF
Îmbunătățiri cheie
- Detectare automată a formatului EMF/WMF și procesare corespunzătoare
- Mai multe opțiuni de poziționare (centru, stânga-sus, coordonate personalizate)
- Control îmbunătățit al scalării și al raportului de aspect
- Randare EMF directă pentru păstrarea graficii vectoriale
- Opțiune de conversie bitmap pentru compatibilitate
- Gestionare îmbunătățită a memoriei pentru metafile mari
- Tratament mai bun al graficii vectoriale complexe și al textului
Opțiuni de control al poziției
Suportul îmbunătățit pentru metafile include opțiuni flexibile de poziționare:
- mpCenter: Metafile centrat pe pagină (comportament implicit)
- mpLeftTop: Metafile afișat în colțul din stânga sus (X=0, Y=0)
- mpCustom: Metafile afișat la poziția specificată (necesită parametrii X, Y)
Exemple de utilizare
Utilizare de bază (afișare centrată implicit)
// 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;
Utilizare cu controlul poziției
// 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;
Metode îmbunătățite
Suportul îmbunătățit pentru EMF/WMF introduce mai multe metode noi:
THPDFPage.ShowMetafile Overloads
ShowMetafile(MetaFile: TMetafile) - Afișare centrată implicit
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - Controlul poziției
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - Poziționare personalizată
Metode de procesare îmbunătățite
EnhancedShowMetafile - Procesare avansată cu funcții îmbunătățite
RenderEmfDirect - Randare EMF directă pentru păstrarea graficii vectoriale
RenderEmfAsBitmap - Conversie bitmap pentru compatibilitate
RenderWmfAsBitmap - Randare bitmap WMF cu controlul poziției
Implementare tehnică
Suportul îmbunătățit EMF/WMF este implementat prin unitatea HPDFEmf.pas, care oferă:
- THPDFEmfEnhanced: Clasa de bază pentru îmbunătățirea procesării EMF
- THPDFEmfPatcher: Clasă utilitară pentru conversia și randarea EMF
- THPDFMetafilePosition: Enumerație pentru controlul poziției
- Enhanced EMF Record Processing: Suport pentru înregistrări EMF avansate
Funcții avansate
Suport pentru înregistrări EMF
- EMR_BITBLT - Operații bitmap
- EMR_STRETCHDIBITS - Operații bitmap întinse
- EMR_ALPHABLEND - Operații de amestecare alfa
- Randare de text îmbunătățită
- Operații complexe pe trasee
Opțiuni de randare
- Păstrarea vectorilor: Menține calitatea graficii vectoriale
- Fallback bitmap: Alternativă automată pentru grafica complexă
- Opțiuni de scalare: Control automat și manual al scalării
- Controlul calității: Setări configurabile pentru calitatea randării
Optimizări de performanță
- Procesare eficientă din punct de vedere al memoriei pentru metafile mari
- Parsare optimizată a înregistrărilor EMF
- Cache inteligent pentru elementele repetate
- Consum redus de memorie în timpul conversiei
Compatibilitate și standarde
- Suport pentru Windows EMF 1.0 și Enhanced EMF
- Compatibilitate înapoi cu Windows Metafile (WMF)
- Comportament consistent al randării pe mai multe platforme
- Respectarea standardelor pentru grafica vectorială PDF
Depanare
Probleme și soluții frecvente:
- Metafile mari: Folosiți randarea bitmap pentru metafile foarte mari sau complexe
- Randarea textului: Asigurați-vă că fonturile sunt disponibile pe sistemul țintă
- Grafică complexă: Luați în calcul randarea EMF directă pentru o calitate mai bună
- Probleme de poziționare: Folosiți poziționarea personalizată pentru amplasare precisă
Vezi și
|