FastReport'un kendi yerleşik PDF yazıcısı yerine HotPDF'i alttaki PDF arka ucu olarak kullanan FastReport 4 / FastReport VCL PDF dışa aktarma filtresi. HotPDF'i çoktan gömmüş ve uygulamanın tamamında tek bir PDF arka ucu isteyen projeler içindir Delphi bildirimi: type TfrxHotPDFExport = class(TfrxCustomExportFilter) published property Compressed: Boolean default True; property Title, Author, Subject, Keywords: string; property PageRange: string; property PDFVersion: TPDFVersType default pdf17; property PDFACompliance: string; property PDFXCompliance: string; property CompressionLevel: TPDFCompressionLevel default clDefault; property RenderDPI: Integer default 200; property ExportMode: TfrxHotPDFExportMode default hemPageMetafile; property AutoCreateURL: Boolean default False; property FontEmbedding: Boolean default True; property NotEmbeddedFonts: TStrings; property ActivateProtection: Boolean default False; property UserPassword, OwnerPassword: string; property CryptKeyLength: THPDFKeyType default k40; property ProtectOptions: THPDFProtectOptions default []; property EncryptMetadata: Boolean default True; property DialogDefaultFileName, DialogFilter, DialogTitle: string; end; Açıklama TfrxHotPDFExport, TfrxCustomExportFilter'dan türer; böylece FastReport çekirdeğinde hiçbir değişiklik gerektirmeden olağan MyReport.Export(MyExportInstance) iş akışına oturur. Birim, RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]) çağırır; böylece filtre, birim bir pakete eklendiğinde IDE bileşen paletinde görünür ShowDialog True olduğunda ve bir çıktı stream'i ayarlanmadığında, dışa aktarma dosyayı bir kaydetme iletişim kutusuyla ister. DialogDefaultFileName dosya adını doldurur (boş: önce FileName, sonra Title, sonra rapor adı), DialogFilter dosya türü listesini ayarlar (boş: PDF dosyaları ve tüm dosyalar), DialogTitle ise başlığı belirler (boş: Export to PDF). Sessiz dışa aktarmalarda etkisizdirler
Bağdaştırıcı üç kipten biriyle dışa aktarabilir: 1. Start taze bir THotPDF örneği oluşturur ve belge üst verisini ayarlar (Title / Author / Subject / Keywords / PDFVersion / Compression) 2. PageRange, isteğe bağlı olarak HotPDF sayfa nesneleri boyutlandırılmadan ya da doldurulmadan önce FastReport sayfalarını filtreler 3. StartPage, yeni HotPDF sayfasını FastReport rapor sayfasının milimetre boyutlarına eşleşecek şekilde punto cinsinden boyutlandırır 4. hemPageMetafile, özgün tüm sayfa önizleme yakalama yolunu korur ve onu ShowEnhancedMetafile üzerinden içe aktarır 5. hemObjectCanvas, FastReport'tan hazırlanan her görünümü ara bir sayfa meta dosyasına çizmesini ister; HotPDF daha sonra o sayfayı içe aktarır 6. hemNativeObjects; desteklenen hazırlanmış görünümleri doğrudan HotPDF sayfa çağrılarına eşler: arka planlı, hizalı, kırpılmış, karakter aralıklı ve çerçeveli seçilebilir memo metni, raster resim görüntü XObject'leri, basit şekil geometrisi, çizgi konturları ve görünüm URL ek açıklamaları 7. Finish EndDoc çağırır ve gerekiyorsa geçici PDF'i çağıranın sağladığı Stream'e kopyalar Property'ler Compressed - HotPDF stream sıkıştırması açık (varsayılan True). Tanısal PDF'ler için False yapın (~5 kat büyük dosyalar).
Title / Author / Subject / Keywords - belge üst verisi. Title boş olduğunda bağdaştırıcı Report.Name'e döner; böylece PDF'in her zaman boş olmayan bir başlığı olur
PageRange - HotPDF sayfa işlemleriyle aynı söz dizimini kullanan, isteğe bağlı bir tabanlı sayfa filtresi; örneğin 1, 1,3-5 ya da tüm sayfalar için boş dize
PDFVersion - belgenin hedefleyeceği PDF spec düzeyi. Varsayılan pdf17
PDFACompliance ve PDFXCompliance - HotPDF standart uyumluluk kapılarını üretilen rapor PDF'ine aktarır. Son uyumluluk iddiasına güvenmeden önce çağıranlar, gerekli ICC profilini, OutputIntent'i, etiketlemeyi veya baskı öncesi varlıkları yine normal HotPDF iş akışıyla hazırlar
CompressionLevel - FlateDecode düzeyi. Varsayılan clDefault
RenderDPI - FastReport sayfası TMetafileCanvas üzerinden rasterleştirilirken kullanılan piksel yoğunluğu. Yüksek = daha keskin metin ve çizgiler ama daha büyük meta dosya ve PDF. 96, FastReport'un yerel ekran DPI'sıdır; 200 (varsayılan), devasa dosyalar olmadan baskı kalitesi sonuç verir
ExportMode - o an eşlenen FastReport görünüm sınıfları için tüm sayfa meta dosyası dışa aktarması, nesne başına tuval dışa aktarması ya da yerel nesne dışa aktarması arasından seçim yapar
AutoCreateURL - THotPDF.AutoCreateURL'e iletilir; böylece native memo metni algılanan URL'ler için URI annotation'ları oluşturabilir
FontEmbedding ve NotEmbeddedFonts - olağan HotPDF yazı tipi gömme ilkesini üretilen rapor PDF'ine aktarır
ActivateProtection, UserPassword, OwnerPassword, CryptKeyLength, ProtectOptions ve EncryptMetadata - şifreli rapor çıktısı gerektiğinde HotPDF parola güvenlik ayarlarını aktarır
Tipik iş akışı Exp := TfrxHotPDFExport.Create(nil); try Exp.FileName := 'Report.pdf'; Exp.Title := 'Monthly Statement'; Exp.PDFVersion := pdf17; Exp.PDFACompliance := '3B'; Exp.PageRange := '1,3-5'; Exp.RenderDPI := 200; Exp.ExportMode := hemNativeObjects; Exp.AutoCreateURL := True; Exp.FontEmbedding := True; Exp.NotEmbeddedFonts.Add('Courier New'); Exp.ActivateProtection := True; Exp.CryptKeyLength := aes256; Exp.OwnerPassword := 'owner'; Exp.UserPassword := 'viewer'; Exp.ProtectOptions := [prPrint, prInformationCopy]; frxReport1.Export(Exp); finally Exp.Free; end; Korunan yetenekler Tüm sayfa ve nesne tuvali kipleri, FastReport'un standart düzen motorunun çizdiği vektör ve raster sayfa içeriğini korur. Yerel nesne kipi şu anda; desteklenen memo metnini arka plan, yatay/dikey hizalama ve çerçeve stilleriyle PDF metni olarak, resim görünümlerini görüntü XObject'leri olarak, basit şekilleri PDF geometrisi olarak, çizgi görünümlerini kontur olarak ve görünüm URL'lerini URI bağlantı ek açıklamaları olarak korur. Belge düzeyi üst veri her kipte korunur Sınırlamalar Ek yapısal eşleme gerektiren FastReport'a özgü PDF özellikleri (AcroForm alanları, adlandırılmış hedefler ve belge ana hatları) bu bağdaştırıcı tarafından aktarılmaz. PDF/A ve PDF/X kapı özellikleri HotPDF'e aktarılır; OutputIntent profilleri gibi standarta özgü varlıklar çağıranın sorumluluğunda kalır Paketleme notu Bağdaştırıcı, ana HotPDF*.dpk paketlerinin bir bağımlılığı yerine isteğe bağlı bir ek olarak dağıtılır; böylece FastReport'u olmayan projeler FastReport birimlerini çekmez Ayrıca bkz.: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Gelişmiş EMF/WMF desteği |