dxHotPDFExportReportLink

Adaptor DevExpress ExpressPrinting System (Lib\Addons\DevExpress\dxHotPDFExport.pas)

 

FastReport adapter  QuickReport adapter  ReportBuilder device

Adaptor ekspor PDF DevExpress ExpressPrinting System (XtraPrinting / XtraReports / link printable cxGrid / dan sejenisnya) yang menggunakan HotPDF sebagai backend PDF di bawahnya alih-alih emitter bawaan DevExpress dxPSExportToPDF / TdxPSPDFExport. Ditujukan untuk proyek yang sudah menyematkan HotPDF dan ingin satu backend PDF untuk seluruh aplikasi

 

Record opsi:

type

  TdxHotPDFExportOptions = record

    Title, Author, Subject, Keywords: string;

    PDFVersion : TPDFVersType;  // default pdf17

    Compression: TPDFCompressionLevel;  // default clDefault

    RenderDPI  : Integer;  // default 200

  end;

 

function dxHotPDFDefaultOptions: TdxHotPDFExportOptions;

 

Titik masuk berbasis file:

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string): Boolean; overload;

 

Titik masuk berbasis stream:

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream): Boolean; overload;

 

Deskripsi

Sistem pencetakan DevExpress berpusat pada TBasedxReportLink - link abstrak yang menjembatani komponen yang dapat dicetak (cxGrid, cxRichEdit, cxScheduler, cxPivotGrid, dan sejenisnya) ke TdxComponentPrinter. Printer / link menyusun halaman, lalu mengekspos metode terlindungi PaintPage(ACanvas, APageBounds, APageIndex, AContinuousIndex, AZoomFactor) yang menggambar satu halaman ke TCanvas mana pun

 

Adaptor ini meniru loop di TdxPSPDFReportExportProvider.Build milik DevExpress, tetapi alih-alih mengarahkan output PaintPage ke canvas PDF DevExpress, ia mengarahkannya ke TMetafileCanvas. Metafile yang dihasilkan kemudian dimasukkan ke importer penskalaan otomatis ShowEnhancedMetafile milik HotPDF:

 

1. Pemanggil menjalankan dxHotPDFExportReportLinkToFile atau dxHotPDFExportReportLinkToStream dengan TBasedxReportLink yang sudah disiapkan

2. Adaptor memanggil AReportLink.RebuildReport untuk menyusun halaman

3. Untuk setiap indeks halaman, adaptor meminta RenderInfo.GetActualPageRenderInfo dari link, menghitung ukuran halaman dalam point PDF (menggunakan rasio PointsPerInch / UnitsPerInch milik DevExpress), membangun TMetafile pada DPI render yang dipilih, dan merender halaman melalui PaintPage(MetaCanvas, ...)

4. Halaman HotPDF baru ditambahkan (atau halaman pertama yang dibuat otomatis dipakai ulang), diukur sesuai dimensi point yang dihitung, lalu metafile diputar melalui ShowEnhancedMetafile

5. HotPDF.EndDoc menulis PDF; untuk overload stream, file sementara kemudian disalin ke TStream yang disediakan pemanggil

 

Opsi

Title / Author / Subject / Keywords - metadata dokumen. Saat Title kosong, adaptor jatuh ke AReportLink.ReportTitle.Text, lalu ke AReportLink.Name, sehingga PDF selalu memiliki judul yang tidak kosong

PDFVersion - level spesifikasi PDF yang harus ditargetkan dokumen. Default pdf17

Compression - level FlateDecode. Default clDefault

RenderDPI - kerapatan piksel yang dipakai saat meraster setiap halaman melalui TMetafileCanvas. Nilai lebih tinggi = teks dan garis lebih tajam tetapi metafile dan PDF lebih besar. 200 (default) memberi hasil kualitas cetak tanpa file yang berlebihan besar. Nilai ≤ 0 dibatasi menjadi 200

 

Alur kerja umum

 

dxComponentPrinter1.CurrentLink := cxGridReportLink1;

dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf');

 

Atau dengan opsi kustom:

 

Opts := dxHotPDFDefaultOptions;

Opts.Title := 'Q1 Sales';

Opts.RenderDPI := 300;

dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf', Opts);

 

Keluarga link yang didukung

Semua turunan TBasedxReportLink. Ini mencakup cxGrid, cxRichEdit, cxScheduler, cxPivotGrid, plus link kustom apa pun yang diturunkan dari class dasar yang sama. Adaptor tidak bergantung pada jenis link tertentu karena kontrak PaintPage didefinisikan pada base

 

Kapabilitas yang dipertahankan

Konten halaman vektor dan raster yang dihasilkan oleh setiap keluarga link DevExpress (cxGrid, cxScheduler, cxRichEdit, cxPivotGrid, link kustom). String teks yang diselesaikan GDI (DevExpress merender teks lewat TCanvas; metafile merekam panggilan teks GDI dengan setia)

 

Batasan bridge metafile

Karena halaman ditangkap sebagai enhanced metafile, fitur PDF khusus DevExpress yang membutuhkan informasi struktural (field AcroForm interaktif, tujuan bernama, bookmark / outline, gate kepatuhan PDF/A atau PDF/X) tidak diteruskan. Outputnya adalah reproduksi visual yang setia dari apa yang dirender DevExpress, bukan PDF terstruktur

 

Catatan pengemasan

Adaptor ini berada di Lib\Addons\DevExpress\ dan bukan bagian dari paket utama HotPDF*.dpk, jadi dependensi DevExpress ExpressPrinting hanya ditarik oleh proyek yang memilih adaptor ini. Sebuah smoke test (smoke_dx_hotpdf.dpr) berada berdampingan dengan unit

 

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