dxHotPDFExportReportLink

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

 

FastReport adapter  QuickReport adapter  ReportBuilder device

Adaptér exportu PDF pre DevExpress ExpressPrinting System (XtraPrinting / XtraReports / cxGrid printable links a podobne), ktorý používa HotPDF ako základný PDF backend namiesto vlastného emitera DevExpress dxPSExportToPDF / TdxPSPDFExport. Určené pre projekty, ktoré už HotPDF vkladajú a chcú jeden PDF backend naprieč celou aplikáciou

 

Options record:

type

  TdxHotPDFExportOptions = record

    Title, Author, Subject, Keywords: string;

    PDFVersion : TPDFVersType;  // default pdf17

    Compression: TPDFCompressionLevel;  // default clDefault

    RenderDPI  : Integer;  // default 200

  end;

 

function dxHotPDFDefaultOptions: TdxHotPDFExportOptions;

 

File-based entry points:

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string): Boolean; overload;

 

Stream-based entry points:

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream): Boolean; overload;

 

Opis

Tlačový systém DevExpressu je založený na TBasedxReportLink - abstraktnom prepojení, ktoré spája tlačiteľný komponent (cxGrid, cxRichEdit, cxScheduler, cxPivotGrid a podobne) s TdxComponentPrinter. Tlačiareň / link skladá strany a potom sprístupňuje chránenú metódu PaintPage(ACanvas, APageBounds, APageIndex, AContinuousIndex, AZoomFactor), ktorá vykreslí jednu stranu do ľubovoľného TCanvas

 

Tento adaptér kopíruje slučku v DevExpress TdxPSPDFReportExportProvider.Build, ale namiesto smerovania výstupu PaintPage do PDF plátna DevExpress ho smeruje do TMetafileCanvas. Výsledný metafile sa potom odovzdá automatickému importéru HotPDF ShowEnhancedMetafile s automatickým škálovaním:

 

1. Volajúci zavolá dxHotPDFExportReportLinkToFile alebo dxHotPDFExportReportLinkToStream s pripraveným TBasedxReportLink

2. The adapter calls AReportLink.RebuildReport to compose pages.

3. Pre každý index strany si vypýta od linku RenderInfo.GetActualPageRenderInfo, vypočíta veľkosť strany v bodoch PDF (použitím vlastného pomeru PointsPerInch / UnitsPerInch od DevExpressu), vytvorí TMetafile v zvolenom render DPI a vykreslí stranu cez PaintPage(MetaCanvas, ...)

4. Pridá sa nová strana HotPDF alebo sa znovu použije automaticky vytvorená prvá strana, nastaví sa na vypočítané rozmery v bodoch a metafile sa prehrá cez ShowEnhancedMetafile

5. HotPDF.EndDoc zapíše PDF; pri streamových overloadoch sa potom do TStream poskytnutého volajúcim skopíruje dočasný súbor

 

Options

Title / Author / Subject / Keywords - metadáta dokumentu. Keď je Title prázdny, adaptér sa vráti na AReportLink.ReportTitle.Text a potom na AReportLink.Name, takže PDF má vždy neprázdny názov

PDFVersion - úroveň špecifikácie PDF, na ktorú má dokument cieliť. Predvolené je pdf17

Compression - FlateDecode level. Defaults to clDefault.

RenderDPI - hustota pixelov použitá pri rasterizácii každej strany cez TMetafileCanvas. Vyššia hodnota znamená ostrejší text a čiary, ale väčší metafile a PDF. 200 (predvolené) dáva výsledky v kvalite na tlač bez obrovských súborov. Hodnoty ≤ 0 sa orežú na 200

 

Typical workflow

 

dxComponentPrinter1.CurrentLink := cxGridReportLink1;

dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf');

 

Or with custom options:

 

Opts := dxHotPDFDefaultOptions;

Opts.Title := 'Q1 Sales';

Opts.RenderDPI := 300;

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

 

Podporované rodiny odkazov

Akýkoľvek potomok TBasedxReportLink. Sem patria cxGrid, cxRichEdit, cxScheduler, cxPivotGrid aj vlastné linky odvodené z tej istej základnej triedy. Adaptér nezávisí od konkrétneho typu linku, pretože kontrakt PaintPage je definovaný na báze

 

Capabilities preserved

Vektorový aj rastrový obsah strán emitovaný všetkými rodinami DevExpress linkov (cxGrid, cxScheduler, cxRichEdit, cxPivotGrid, vlastné linky). Textové reťazce vyriešené cez GDI (DevExpress vykresľuje text cez TCanvas; metafile verne zaznamená volania GDI textu)

 

Limitations of the metafile bridge

Keďže strany sa zachytávajú ako enhanced metafiles, funkcie PDF špecifické pre DevExpress, ktoré vyžadujú štrukturálne informácie (interaktívne polia AcroForm, pomenované ciele, záložky / osnovy, brány zhody PDF/A alebo PDF/X), sa neprenášajú. Výstup je verným vizuálnym zobrazením toho, čo DevExpress vykreslí, nie štruktúrované PDF

 

Packaging note

Adaptér žije v Lib\Addons\DevExpress\ a nie je súčasťou hlavných balíkov HotPDF*.dpk, takže závislosť DevExpress ExpressPrinting sa pridá len do projektov, ktoré sa k adaptéru prihlásia. Smoke test (smoke_dx_hotpdf.dpr) je uložený vedľa jednotky

 

See also: TfrxHotPDFExport, TQRHotPDFExportFilter, TppHotPDFDevice, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support