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ż