TppHotPDFDevice

Adaptor ReportBuilder (Lib\Addons\ReportBuilder\ppHotPDFDevice.pas)

 

Adaptor FastReport  Adaptor QuickReport  Adaptor DevExpress

Kelas perangkat ReportBuilder yang memakai HotPDF sebagai backend PDF di bawah alih-alih ppPDFDevice bawaan ReportBuilder. Ditujukan untuk proyek yang sudah menanam HotPDF dan ingin satu backend PDF di seluruh aplikasi

 

Deklarasi Delphi:

type

  TppHotPDFDevice = class(TppGraphicsDevice)

  public

    class function DeviceName: String; override;

    procedure StartJob; override;

    procedure EndJob; override;

    procedure CancelJob; override;

    procedure SetOutputStream(AStream: TStream);

    property FileName: string;

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType;

    property Compressed: Boolean;

    property CompressionLevel: TPDFCompressionLevel;

  end;

 

Deskripsi

TppHotPDFDevice mewarisi TppGraphicsDevice (satu level di atas TppCustomScreenDevice / TppImageDevice), sehingga masuk ke rantai perangkat ReportBuilder saat ditetapkan ke TppReport.PrinterDevice atau dipakai sebagai perangkat penerbit pada TppPublisher. DeviceName dilaporkan sebagai 'HotPDF'. Karena pendaftaran perangkat di ReportBuilder dilakukan melalui ppRptDeviceMap alih-alih RegisterComponents, tidak ada entri palet komponen IDE - pemanggil membuat instance TppHotPDFDevice secara langsung

 

Setiap halaman yang melewati TppGraphicsDevice.ReceivePage digambar ke TMetafileCanvas sementara yang dibuat di BeforeRenderPage dan dituntaskan di AfterRenderPage. TMetafile yang tertangkap lalu diteruskan ke pengimpor penskalaan otomatis HotPDF ShowEnhancedMetafile:

 

1 StartJob membuat instance THotPDF, menetapkan metadata, lalu memanggil BeginDoc

2 BeforeRenderPage membuat TMetafile berukuran spWidth x spHeight beserta TMetafileCanvas, lalu menjadikannya Canvas turunan

3 RenderPage bawaan menelusuri DrawCommands dan meneruskannya melalui GraphicsContext ke kanvas metafile kami

4 AfterRenderPage menuntaskan metafile, membebaskan kanvas, menambahkan halaman HotPDF baru berukuran mmWidth x mmHeight yang sudah dikonversi ke titik PDF, lalu memutar metafile lewat ShowEnhancedMetafile

5 EndJob memanggil HotPDF.EndDoc; jika keluarannya berupa Stream, bytes disalin dari file sementara yang ditulis di dalam

 

Properti

FileName - path PDF tujuan. Dipakai kecuali SetOutputStream sudah memasang stream

Title / Author / Subject / Keywords - metadata dokumen. Saat Title kosong perangkat akan kembali ke FileName sehingga PDF selalu memiliki judul yang tidak kosong

PDFVersion - level spesifikasi PDF yang menjadi target dokumen. Default pdf17

Compressed - kompresi stream HotPDF aktif, default True. Set False untuk PDF diagnostik

CompressionLevel - level FlateDecode. Default clDefault

SetOutputStream(AStream) - arahkan bytes PDF ke AStream alih-alih menulis ke disk. Panggil sebelum report memicu StartJob

 

Alur kerja umum

 

Dev := TppHotPDFDevice.Create(nil);

try

  Dev.FileName := 'Report.pdf';

  Dev.Title := 'Monthly Statement';

  Dev.PDFVersion := pdf17;

  ppReport1.DeviceType := 'HotPDF';

  ppReport1.PrinterDevice := Dev;

  ppReport1.Print;

finally

  Dev.Free;

end;

 

Kemampuan yang dipertahankan

Konten halaman vektor dan raster dirender lewat pipeline draw-command standar ReportBuilder. String teks diselesaikan oleh GDI. Penangkapan metafile 200 DPI bawaan, yang dapat diatur lewat PixelsPerInch turunan, memberi keluaran kualitas cetak tanpa file yang membengkak

 

Batasan bridge metafile

Karena halaman ditangkap sebagai enhanced metafile, fitur PDF khusus ReportBuilder yang memerlukan informasi struktural (field AcroForm, named destination, outline, atau gerbang kepatuhan PDF/A maupun PDF/X) tidak ikut terbawa. Keluaran merupakan reproduksi visual yang setia dari apa yang dirender ReportBuilder, bukan PDF terstruktur

 

Catatan paket

Perangkat ini berada di Lib\Addons\ReportBuilder\ dan bukan bagian dari paket utama HotPDF*.dpk, jadi dependensi ReportBuilder hanya ikut terambil oleh proyek yang memilih perangkat ini. Ada smoke test (smoke_pp_hotpdf.dpr) di sebelah unitnya

 

Lihat juga: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Dukungan EMF/WMF yang Ditingkatkan