Geliştirilmiş EMF/WMF desteği Genel bakış HotPDF artık Enhanced Metafile (EMF) ve Windows Metafile (WMF) biçimleri için belirgin biçimde gelişmiş destek sunuyor. Yeni uygulama; otomatik biçim algılama, çok sayıda konumlama seçeneği, gelişmiş ölçekleme kontrolü ve PDF belgelerindeki vektör grafikleri için iyileştirilmiş çizim kalitesi içeriyor. Öne çıkan geliştirmeler
- Otomatik EMF/WMF biçim algılama ve uygun işleme
- Çok sayıda konumlama seçeneği (orta, sol üst, özel koordinatlar)
- Gelişmiş ölçekleme ve en-boy oranı kontrolü
- Sıkıştırma, ölçekleme, referans DC, kalem stili işlemesi, tarama fırçası korunumu ve boş nesne tanılaması için çağrı başına çizim seçenekleri
- Vektör grafik korunumu için doğrudan EMF çizimi
- Uyumluluk için bitmap dönüşümü seçeneği
- Büyük meta dosyaları için iyileştirilmiş bellek yönetimi
- Karmaşık vektör grafikleri ve metnin daha iyi işlenmesi
Konum kontrol seçenekleri Gelişmiş meta dosya desteği esnek konumlama seçenekleri içerir:
- mpCenter: Meta dosya sayfada ortalanır (varsayılan davranış)
- mpLeftTop: Meta dosya sol üst köşede gösterilir (X=0, Y=0)
- mpCustom: Meta dosya belirtilen konumda gösterilir (X, Y parametreleri gerekir)
Kullanım örnekleri Temel kullanım (varsayılan ortalanmış gösterim)
// 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;
Konum kontrol kullanımı
// 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;
Çağrı başına çizim seçenekleri
// Delphi example - Per-call options
procedure ShowMetafileWithOptions;
var
PDF: THotPDF;
MetaFile: TMetafile;
Options: THPDFEmfOptions;
begin
PDF := THotPDF.Create(nil);
MetaFile := TMetafile.Create;
Options := THPDFEmfOptions.Create;
try
Options.EmfBitmapScale := 1;
Options.ColorImageCompression := icFlate;
Options.UseScreenReferenceDC := False;
Options.CanvasOver := True;
Options.Redraw := False;
Options.UseFrame := True;
Options.ShowNullPen := True;
Options.ShowNullBrush := True;
PDF.BeginDoc;
PDF.AddPage;
MetaFile.LoadFromFile('diagram.emf');
PDF.CurrentPage.ShowMetafile(MetaFile, mpCenter, 0, 0, Options);
PDF.EndDoc;
finally
Options.Free;
MetaFile.Free;
PDF.Free;
end;
end;
Gelişmiş metotlar Gelişmiş EMF/WMF desteği birkaç yeni metot getirir: THPDFPage.ShowMetafile aşırı yüklemeleri
ShowMetafile(MetaFile: TMetafile) - Varsayılan ortalanmış gösterim
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition) - Konum kontrolü
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single) - Özel konumlama
ShowMetafile(MetaFile: TMetafile; Options: THPDFEmfOptions) - Çağrı başına çizim seçenekleri
ShowMetafile(MetaFile: TMetafile; Position: THPDFMetafilePosition; X, Y: Single; Options: THPDFEmfOptions) - Çağrı başına çizim seçenekleriyle konum kontrolü
ShowMetafileEx(MetaFile: TMetafile; Options: THPDFEmfOptions) - tek çizimlik EMF/WMF seçenek geçersiz kılmalı doğrudan sayfa API'si
Gelişmiş işleme metotları
EnhancedShowMetafile - Gelişmiş özelliklerle ileri işleme
ShowEnhancedMetafile(Page, MetaFile, Options) - Çağrı başına çizim seçenekli global yardımcı
ShowEnhancedMetafile(Page, MetaFile, Position, X, Y, Options) - Konum kontrolü ve çağrı başına çizim seçenekleri olan global yardımcı
ShowEnhancedMetafile(Page, FileName, Options) - Çağrı başına çizim seçenekleri olan dosya adı yardımcısı
ShowEnhancedMetafile(Page, FileName, Position, X, Y, Options) - Konum kontrolü ve çağrı başına çizim seçenekleri olan dosya adı yardımcısı
RenderEmfDirect - Vektör korunumu için doğrudan EMF çizimi
RenderEmfAsBitmap - Uyumluluk için bitmap dönüşümü
RenderWmfAsBitmap - Konum kontrollü WMF bitmap çizimi
Teknik uygulama Gelişmiş EMF/WMF desteği, şunları sağlayan HPDFEmf.pas birimi üzerinden uygulanır:
- THPDFEmfEnhanced: EMF işlemesi için çekirdek geliştirme sınıfı
- THPDFEmfPatcher: EMF dönüşümü ve çizimi için yardımcı sınıf
- THPDFMetafilePosition: Konum kontrolü için enumerasyon
- Gelişmiş EMF kayıt işlemesi: İleri EMF kayıtları desteği
THPDFPageHelper ve C++ sınırı Delphi XE2 ve sonrasında yukarıda listelenen THPDFPage.ShowMetafile ve THPDFPage.EnhancedShowMetafile overload'ları, HPDFEmf biriminde bildirilen bir class helper olan THPDFPageHelper tarafından enjekte edilir; yani uses cümlesine HPDFEmf eklemek, herhangi bir THPDFPage örneği üzerinde onları çağırmak için gereken tek şeydir Class helper'lar yalnızca Delphi'ye özgü bir dil özelliğidir ve C++Builder'dan erişilemez: C++ çağıranlar bunun yerine Gelişmiş İşleme Metotları altında listelenen global ShowEnhancedMetafile(Page, MetaFile, ...) yardımcılarını kullanır; tıpkı ConvertTo demosunun yaptığı gibi XE2 öncesi Delphi sürümlerinde aynı işlevsellik, sayfayı ilk argüman olarak alan düz uyumluluk prosedürleri olarak sunulur: THPDFPage_ShowMetafile(Page, MetaFile), THPDFPage_ShowMetafile(Page, MetaFile, Position, X, Y), THPDFPage_EnhancedShowMetafile(Page, MetaFile) ve THPDFPage_EnhancedShowMetafile(Page, MetaFile, Position, X, Y) Geliştirme anahtarı Gelişmiş yol, HPDFEmf içindeki, varsayılanı True olan EmfSupportEnabled: Boolean değişkeniyle korunur; onu False yapmak her meta dosya gösterimini temel render yoluna düşürür Vazgeçtikten sonra gelişmiş yolu yeniden açmak için EnableEnhancedEmfSupport çağırın; demolar ilk ShowMetafile çağrılarından önce bu deseni kullanır İleri özellikler EMF kayıt desteği
- EMR_BITBLT - Bitmap işlemleri
- EMR_STRETCHDIBITS - Gerilmiş bitmap işlemleri
- EMR_ALPHABLEND - Alfa harmanlama işlemleri
- Gelişmiş metin çizimi
- Karmaşık yol işlemleri
Çizim seçenekleri
- Vektör korunumu: Vektör grafik kalitesini korur
- Bitmap geri dönüşü: Karmaşık grafikler için otomatik yedek
- Ölçekleme seçenekleri: Otomatik ve manuel ölçekleme kontrolü
- Kalite kontrolü: Yapılandırılabilir çizim kalitesi ayarları
- Tuval katmanlaması: Var olan sayfa içeriği, yeniden oynatılan Canvas meta dosyası içeriğinin üzerinde çizilecekse
THPDFEmfOptions.CanvasOver ayarlayın
- Yeniden çizim kontrolü: Varsayılan geçici yeniden çizim yolu için
THPDFEmfOptions.Redraw'u etkin bırakın ya da özgün meta dosyayı doğrudan ayrıştırmak için devre dışı bırakın
- Çerçeve kırpma: İçe aktarılan meta dosyalar çerçeve sınırlarına güveniyorsa EMF çıktısını başlık çerçevesine kırpmak için
THPDFEmfOptions.UseFrame'i ayarlayın
- Tarama fırçası desenleri: EMF/WMF tarama fırçaları PDF döşeme desenlerine eşlenir; böylece içe aktarılan çizimler dolgu dokusunu korur
- Boş nesne tanılaması: Boş kalemleri ve boş fırçaları varsayılan olarak görünmez tutun ya da tanılama, o yolların veya dolguların görünür olmasını gerektiriyorsa
THPDFEmfOptions.ShowNullPen ile THPDFEmfOptions.ShowNullBrush ayarlayın
Performans iyileştirmeleri
- Büyük meta dosyalar için bellek verimli işleme
- İyileştirilmiş EMF kayıt ayrıştırma
- Yinelenen öğeler için akıllı önbellekleme
- Dönüştürme sırasında küçülmüş bellek ayak izi
Uyumluluk ve standartlar
- Windows EMF 1.0 ve Enhanced EMF desteği
- Windows Metafile (WMF) geriye dönük uyumluluk
- Platformlar arası çizim tutarlılığı
- PDF vektör grafik standartları uyumluluğu
Sorun giderme Yaygın sorunlar ve çözümleri:
- Büyük meta dosyalar: Çok büyük ya da karmaşık meta dosyalar için bitmap çizimi kullanın
- Metin çizimi: Hedef sistemde yazı tiplerinin bulunduğundan emin olun
- Karmaşık grafikler: Daha iyi kalite için doğrudan EMF çizimini düşünün
- Konumlama sorunları: Hassas yerleştirme için özel konumlama kullanın
Ayrıca bakın |