|
Ulepszona obsługa metaplików EMF/WMF
Omówienie
HotPDF zapewnia teraz znacznie rozszerzoną obsługę formatów Enhanced Metafile (EMF) i Windows Metafile (WMF)
Nowa implementacja obejmuje automatyczne wykrywanie formatu, wiele opcji pozycjonowania, zaawansowane sterowanie skalowaniem,
oraz lepszą jakość renderowania grafiki wektorowej w dokumentach PDF
Najważniejsze usprawnienia
- Automatyczne wykrywanie formatu EMF/WMF i odpowiednie przetwarzanie
- Wiele opcji pozycjonowania (środek, lewy górny róg, współrzędne niestandardowe)
- Ulepszone skalowanie i kontrola proporcji
- Bezpośrednie renderowanie EMF w celu zachowania grafiki wektorowej
- Opcja konwersji do bitmapy dla zgodności
- Usprawnione zarządzanie pamięcią dla dużych metaplików
- Lepsza obsługa złożonej grafiki wektorowej i tekstu
Opcje kontroli położenia
Ulepszona obsługa metaplików obejmuje elastyczne opcje pozycjonowania:
- mpCenter: Metaplik wyśrodkowany na stronie (zachowanie domyślne)
- mpLeftTop: Metaplik wyświetlany w lewym górnym rogu (X=0, Y=0)
- mpCustom: Metaplik wyświetlany w określonym położeniu (wymaga parametrów X, Y)
Przykłady użycia
Podstawowe użycie (domyślny widok wyśrodkowany)
// Przykład Delphi - domyślny widok wyśrodkowany
procedure ShowMetafileDefault;
var
PDF: THotPDF;
MetaFile: TMetafile;
begin
PDF := THotPDF.Create(nil);
MetaFile := TMetafile.Create;
try
PDF.BeginDoc;
PDF.AddPage;
// Wczytaj metaplik
MetaFile.LoadFromFile('diagram.emf');
// Wyświetl wyśrodkowany na stronie (domyślnie)
PDF.CurrentPage.ShowMetafile(MetaFile);
PDF.EndDoc;
finally
MetaFile.Free;
PDF.Free;
end;
end;
Użycie kontroli położenia
// Przykład Delphi - zaawansowane pozycjonowanie
procedure ShowMetafileAdvanced;
var
PDF: THotPDF;
MetaFile: TMetafile;
begin
PDF := THotPDF.Create(nil);
MetaFile := TMetafile.Create;
try
PDF.BeginDoc;
PDF.AddPage;
MetaFile.LoadFromFile('chart.wmf');
// Wyświetl w lewym górnym rogu
PDF.CurrentPage.ShowMetafile(MetaFile, mpLeftTop);
// Wyświetl w niestandardowym położeniu
PDF.CurrentPage.ShowMetafile(MetaFile, mpCustom, 100, 200);
PDF.EndDoc;
finally
MetaFile.Free;
PDF.Free;
end;
end;
Ulepszone metody
Ulepszona obsługa EMF/WMF wprowadza kilka nowych metod:
Przeciążenia THPDFPage.ShowMetafile
ShowMetafile(MetaFile: TMetafile) - Domyślny widok wyśrodkowany
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - Kontrola położenia
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - Pozycjonowanie niestandardowe
Ulepszone metody przetwarzania
EnhancedShowMetafile - Zaawansowane przetwarzanie z ulepszonymi funkcjami
RenderEmfDirect - Bezpośrednie renderowanie EMF w celu zachowania wektorów
RenderEmfAsBitmap - Konwersja do bitmapy dla zgodności
RenderWmfAsBitmap - Renderowanie bitmapy WMF z kontrolą położenia
Implementacja techniczna
Ulepszona obsługa EMF/WMF jest zaimplementowana w module HPDFEmf.pas, który udostępnia:
- THPDFEmfEnhanced: Główna klasa usprawnień do przetwarzania EMF
- THPDFEmfPatcher: Klasa narzędziowa do konwersji i renderowania EMF
- THPDFMetafilePosition: Wyliczenie do kontroli położenia
- Ulepszone przetwarzanie rekordów EMF: Obsługa zaawansowanych rekordów EMF
Funkcje zaawansowane
Obsługa rekordów EMF
- EMR_BITBLT - Operacje bitmapowe
- EMR_STRETCHDIBITS - Operacje rozciągania bitmap
- EMR_ALPHABLEND - Operacje mieszania alfa
- Ulepszone renderowanie tekstu
- Operacje na złożonych ścieżkach
Opcje renderowania
- Zachowanie wektorów: Zachowuje jakość grafiki wektorowej
- Awaryjne użycie bitmapy: Automatyczne rozwiązanie awaryjne dla złożonej grafiki
- Opcje skalowania: Automatyczna i ręczna kontrola skalowania
- Kontrola jakości: Konfigurowalne ustawienia jakości renderowania
Optymalizacje wydajności
- Oszczędne pamięciowo przetwarzanie dużych metaplików
- Zoptymalizowane parsowanie rekordów EMF
- Inteligentne buforowanie powtarzanych elementów
- Zmniejszone użycie pamięci podczas konwersji
Zgodność i standardy
- Obsługa Windows EMF 1.0 i Enhanced EMF
- Zgodność wsteczna z Windows Metafile (WMF)
- Spójność renderowania między platformami
- Zgodność ze standardami grafiki wektorowej PDF
Rozwiązywanie problemów
Typowe problemy i rozwiązania:
- Duże metapliki: Użyj renderowania bitmapowego dla bardzo dużych lub złożonych metaplików
- Renderowanie tekstu: Upewnij się, że fonty są dostępne w systemie docelowym
- Złożona grafika: Rozważ bezpośrednie renderowanie EMF dla lepszej jakości
- Problemy z pozycjonowaniem: Użyj niestandardowego pozycjonowania dla precyzyjnego umieszczenia
Zobacz też
|