TQRHotPDFExportFilter

QuickReport adapter (Lib\Addons\QuickReport\qrHotPDFExport.pas)

 

FastReport adapter  ReportBuilder device  DevExpress adapter

QuickReport'un kendi QRPDFFilter'ı yerine HotPDF'i alttaki PDF arka ucu olarak kullanan QuickReport 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

  TQRHotPDFExportFilter = class(TQRExportFilter)

  public

    constructor Create(Filename: string); override;

    procedure SetOutputStream(AStream: TStream);

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType;

    property PDFACompliance: string;

    property PDFXCompliance: string;

    property Compressed: Boolean;

    property CompressionLevel: TPDFCompressionLevel;

  end;

 

Açıklama

TQRHotPDFExportFilter, TQRExportFilter'dan türer; böylece QuickReport çekirdeğinde hiçbir değişiklik gerektirmeden olağan MyReport.ExportToFilter(MyExporterInstance) iş akışına oturur. TQRExportFilter bir TComponent alt sınıfı olmadığından (QuickReport tasarımında düz bir sınıftır) IDE bileşen kaydı yoktur; çağıranlar TQRHotPDFExportFilter'i doğrudan Create('out.pdf') ile örnekler.

 

QuickReport, hazırlanan her sayfayı QRPrinter.PageList içinde önbelleğlenen bir TMetafile'a çizer. Bağdaştırıcı, bileşen başına tüm TextOut / AcceptGraphic / AcceptBand geri çağıri kümesini yeniden yazmak yerine bunları yok sayar (işlemsiz override'lar) ve sayfa başına meta dosyalarını Finish içinde toplar:

 

1. Start(PaperWidth, PaperHeight, Font) - THotPDF örneğini oluşturur, metadata'yı ayarlar, BeginDoc çağırır ve (PaperWidth, PaperHeight) değerlerini kaydeder; böylece Finish sayfaları doğru biçimlendirebilir

2. NewPage / EndPage / TextOut / AcceptGraphic - işlemsizdir (meta dosyada çizilen içerik hâlihazırda vardır).

3. Finish - önbelleklenen her QRPrinter.PageList[i] meta dosyası için, punto cinsinden PaperWidth / PaperHeight boyutlu bir HotPDF sayfası ekler (veya yeniden kullanır) ve ShowEnhancedMetafile çağırır. Sonra EndDoc ve serbest bırakma.

 

Property'ler

Title / Author / Subject / Keywords - belge üst verisi. Title boş olduğunda bağdaştırıcı Filename'e döner; böylece PDF'in her zaman boş olmayan bir başlığı olur. ExportToFilter çağrılmadan önce ayarlayın.

PDFVersion - belgenin hedeflemesi gereken PDF spesifikasyon 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.

Compressed - HotPDF stream sıkıştırması açık (varsayılan True). Tanısal PDF'ler için False yapın.

CompressionLevel - FlateDecode düzeyi. Varsayılan clDefault'dur.

SetOutputStream(AStream) - PDF baytlarını diske yazmak yerine AStream'e yönlendirir. ExportToFilter'dan önce çağırın. Dahili olarak geçici bir dosya kullanılır; çünkü HotPDF EndDoc içinde kaydeder, baytlar Finish içinde geri akıtılır.

 

Tipik iş akışı

 

Filter := TQRHotPDFExportFilter.Create('Report.pdf');

try

  Filter.Title := 'Monthly Statement';

  Filter.PDFVersion := pdf17;

  Filter.PDFACompliance := '3B';

  QuickRep1.ExportToFilter(Filter);

finally

  Filter.Free;

end;

 

Korunan yetenekler

QuickReport'un standart önizleme / yazıcı hattının çizdiği vektör ve raster sayfa içeriği. GDI ile çözülmüş metin dizeleri. Sayfa boyutlandırma, QuickReport'un Start'a verdiği PaperWidth / PaperHeight'i izler.

 

Meta dosya köprüsünün sınırlamaları

Sayfalar gelişmiş meta dosyalar olarak yakalandığından, yapısal bilgi gerektiren QuickReport'a özgü PDF özellikleri (AcroForm alanları, adlandırılmış hedefler ve ana hatlar) aktarılmaz. PDF/A ve PDF/X kapı özellikleri HotPDF'e aktarılır; ama OutputIntent profilleri gibi standarta özgü varlıklar çağıranın sorumluluğunda kalır. Çıktı, QuickReport'un ç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\QuickReport\ içinde yaşar ve ana HotPDF*.dpk paketlerinin parçası değildir; böylece QuickReport bağımlılığını yalnızca bağdaştırıcıya katılan projeler çeker. Birim yanında bir duman testi (smoke_qr_hotpdf.dpr) bulunur.

 

Ayrıca bkz.: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Gelişmiş EMF/WMF desteği