DevExpress'in kendi dxPSExportToPDF / TdxPSPDFExport üreticisi yerine HotPDF'i alttaki PDF arka ucu olarak kullanan DevExpress ExpressPrinting System (XtraPrinting / XtraReports / cxGrid yazdırılabilir bağlantıları / ve benzeri) PDF dışa aktarma bağdaştırıcısı. HotPDF'i çoktan gömmüş ve uygulamanın tamamında tek bir PDF arka ucu isteyen projeler içindir. Seçenekler kaydı: type TdxHotPDFExportOptions = record Title, Author, Subject, Keywords: string; PDFVersion : TPDFVersType; // varsayılan pdf17 PDFACompliance: string; PDFXCompliance: string; Compression: TPDFCompressionLevel; // varsayılan clDefault RenderDPI : Integer; // varsayılan 200 end; function dxHotPDFDefaultOptions: TdxHotPDFExportOptions; Dosya tabanlı giriş noktaları: function dxHotPDFExportReportLinkToFile( AReportLink: TBasedxReportLink; const AOutputFileName: string; const AOptions: TdxHotPDFExportOptions): Boolean; overload; function dxHotPDFExportReportLinkToFile( AReportLink: TBasedxReportLink; const AOutputFileName: string): Boolean; overload; Stream tabanlı giriş noktaları: function dxHotPDFExportReportLinkToStream( AReportLink: TBasedxReportLink; AOutputStream: TStream; const AOptions: TdxHotPDFExportOptions): Boolean; overload; function dxHotPDFExportReportLinkToStream( AReportLink: TBasedxReportLink; AOutputStream: TStream): Boolean; overload; Açıklama DevExpress'in baskı sistemi TBasedxReportLink üzerine kuruludur — yazdırılabilir bir bileşeni (cxGrid, cxRichEdit, cxScheduler, cxPivotGrid ve benzeri) bir TdxComponentPrinter'a köprüleyen soyut bağlantı. Yazıcı / bağlantı sayfaları oluşturur; ardından tek bir sayfayı herhangi bir TCanvas'a çizen korumalı PaintPage(ACanvas, APageBounds, APageIndex, AContinuousIndex, AZoomFactor) metodunu ortaya koyar. Bu bağdaştırıcı, DevExpress'in kendi TdxPSPDFReportExportProvider.Build döngüsünü aynalar; ama PaintPage'in çıktısını bir DevExpress PDF tuvaline yönlendirmek yerine bir TMetafileCanvas'a yönlendirir. Oluşan meta dosya daha sonra HotPDF'in ShowEnhancedMetafile otomatik ölçekleme içe aktarıcısına verilir: 1. Çağıran, hazırlanan TBasedxReportLink ile dxHotPDFExportReportLinkToFile veya dxHotPDFExportReportLinkToStream'i çağırır. 2. Bağdaştırıcı, sayfaları oluşturmak için AReportLink.RebuildReport'u çağırır. 3. Her sayfa indeksi için bağlantıdan RenderInfo.GetActualPageRenderInfo'u ister, sayfa boyutunu PDF puntolarında hesaplar (DevExpress'in kendi PointsPerInch / UnitsPerInch oranını kullanarak), seçilen çizim DPI'sında bir TMetafile kurar ve sayfayı PaintPage(MetaCanvas, ...) ile çizer. 4. Hesaplanan punto boyutlarında yeni bir HotPDF sayfası eklenir (ya da otomatik oluşturulan ilk sayfa yeniden kullanılır) ve meta dosya ShowEnhancedMetafile ile oynatılır. 5. HotPDF.EndDoc PDF'i yazar; stream aşırı yüklemeleri için geçici dosya bundan sonra çağıranın sağladığı TStream'e kopyalanır. Seçenekler Title / Author / Subject / Keywords - belge üst verisi. Title boş olduğunda bağdaştırıcı önce AReportLink.ReportTitle.Text'e, sonra AReportLink.Name'e döner; böylece PDF'in her zaman boş olmayan bir başlığı olur.
PDFVersion - belgenin hedefleyeceği PDF spec düzeyi. Varsayılan pdf17'dir.
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.
Compression - FlateDecode düzeyi. Varsayılan clDefault'dur.
RenderDPI - her sayfa 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. 200 (varsayılan), devasa dosyalar olmadan baskı kalitesi sonuç verir. ≤ 0 değerleri 200'e kelepçelenir.
Tipik iş akışı dxComponentPrinter1.CurrentLink := cxGridReportLink1; dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf'); Ya da özel seçeneklerle: Opts := dxHotPDFDefaultOptions; Opts.Title := 'Q1 Sales'; Opts.PDFACompliance := '3B'; Opts.RenderDPI := 300; dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf', Opts); Desteklenen bağlantı aileleri TBasedxReportLink'in herhangi bir alt sınıfı. Bu; cxGrid, cxRichEdit, cxScheduler, cxPivotGrid ile aynı temel sınıftan türetilen tüm özel bağlantıları kapsar. Bağdaştırıcı, PaintPage sözleşmesi temel sınıfta tanımlandığı için belirli bağlantı türüne bağlı değildir.
Korunan yetenekler Her DevExpress bağlantı ailesinin (cxGrid, cxScheduler, cxRichEdit, cxPivotGrid, özel bağlantılar) yazdığı vektör ve raster sayfa içeriği. GDI ile çözülmüş metin dizeleri (DevExpress metni TCanvas üzerinden çizer; meta dosya GDI metin çağrılarını sadakatle kaydeder). Meta dosya köprüsünün sınırlamaları Sayfalar gelişmiş meta dosyalar olarak yakalandığından, yapısal bilgi gerektiren DevExpress'e özgü PDF özellikleri (etkileşimli AcroForm alanları, adlandırılmış hedefler ve yer imleri / ana hatlar) aktarılmaz. PDF/A ve PDF/X seçenek alanları HotPDF'e aktarılır; OutputIntent profilleri gibi standarta özgü varlıklar çağıranın sorumluluğunda kalır. Çıktı, DevExpress'in çizdiği şeyin sadık bir görsel kopyasıdır, yapısal bir PDF değildir. Paketleme notu Bağdaştırıcı Lib\Addons\DevExpress\ içinde yaşar ve ana HotPDF*.dpk paketlerinin parçası değildir; böylece DevExpress ExpressPrinting bağımlılığını yalnızca bağdaştırıcıya katılan projeler çeker. Birim yanında bir duman testi (smoke_dx_hotpdf.dpr) bulunur. Ayrıca bkz.: TfrxHotPDFExport, TQRHotPDFExportFilter, TppHotPDFDevice, THPDFPage.ShowMetafile, Gelişmiş EMF/WMF desteği |