dxHotPDFExportReportLink

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

 

FastReport adapter  QuickReport adapter  ReportBuilder device

Prilagoditveni izvoznik PDF za DevExpress ExpressPrinting System (XtraPrinting / XtraReports / cxGrid printable links / in podobno), ki uporablja HotPDF kot osnovni PDF backend namesto DevExpressovega lastnega izhodnika dxPSExportToPDF / TdxPSPDFExport. Namenjen je projektom, ki že vključujejo HotPDF in želijo en sam PDF backend v celotni aplikaciji

 

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;

 

Description

Tiskalni sistem DevExpress je zgrajen okoli TBasedxReportLink - abstraktne povezave, ki povezuje natisljiv gradnik (cxGrid, cxRichEdit, cxScheduler, cxPivotGrid in podobne) s TdxComponentPrinter. Tiskalnik / povezava sestavi strani, nato pa izpostavi zaščiteno metodo PaintPage(ACanvas, APageBounds, APageIndex, AContinuousIndex, AZoomFactor), ki nariše eno stran na kateri koli TCanvas

 

Ta adapter ponovi zanko v DevExpressovem lastnem TdxPSPDFReportExportProvider.Build, vendar namesto da bi izhod PaintPage usmeril v DevExpressov PDF canvas, ga usmeri v TMetafileCanvas. Nastali metafile se nato poda v HotPDF-jev uvoznik ShowEnhancedMetafile s samodejnim skaliranjem:

 

1. Klicatelj pokliče dxHotPDFExportReportLinkToFile ali dxHotPDFExportReportLinkToStream s pripravljenim TBasedxReportLink

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

3. Za vsak indeks strani od povezave zahteva RenderInfo.GetActualPageRenderInfo, izračuna velikost strani v točkah PDF (z uporabo DevExpressovega razmerja PointsPerInch / UnitsPerInch), ustvari TMetafile pri izbranem DPI za izris in stran izriše prek PaintPage(MetaCanvas, ...)

4. Doda se nova stran HotPDF (ali se znova uporabi samodejno ustvarjena prva stran), prilagojena izračunanim dimenzijam v točkah, metafile pa se predvaja prek ShowEnhancedMetafile

5. HotPDF.EndDoc zapiše PDF; pri preobremenitvah za tok se začasna datoteka nato kopira v TStream, ki ga je zagotovil klicatelj

 

Options

Title / Author / Subject / Keywords - metapodatki dokumenta. Kadar je Title prazen, se prilagoditev vrne na AReportLink.ReportTitle.Text, nato na AReportLink.Name, zato ima PDF vedno neprazen naslov

PDFVersion - raven specifikacije PDF, ki ji naj dokument sledi. Privzeto je pdf17

Compression - FlateDecode level. Defaults to clDefault.

RenderDPI - gostota slikovnih pik, uporabljena pri rastru vsake strani prek TMetafileCanvas. Višja vrednost pomeni ostrejše besedilo in črte, vendar večji metafile in PDF. 200 (privzeto) da rezultate, primerne za tisk, brez ogromnih datotek. Vrednosti ≤ 0 se omejijo 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);

 

Podprte družine povezav

Vsak potomec TBasedxReportLink. To zajema cxGrid, cxRichEdit, cxScheduler, cxPivotGrid ter vse prilagojene povezave, izpeljane iz istega osnovnega razreda. Prilagoditev ni odvisna od konkretnega tipa povezave, ker je pogodba PaintPage definirana v osnovi

 

Capabilities preserved

Vektorska in rastrska vsebina strani, ki jo ustvarijo vse družine DevExpressovih povezav (cxGrid, cxScheduler, cxRichEdit, cxPivotGrid, prilagojene povezave). Besedilni nizi, razrešeni prek GDI (DevExpress izriše besedilo prek TCanvas; metafile zvesto zapiše GDI klice za besedilo)

 

Limitations of the metafile bridge

Ker se strani zajemajo kot izboljšane metafajle, DevExpress-ove funkcije PDF, ki zahtevajo strukturne informacije (interaktivna polja AcroForm, imenovani cilji, zaznamki / orisi, mehanizmi skladnosti PDF/A ali PDF/X), niso prenesene. Izhod je zvest vizualni posnetek tega, kar DevExpress izriše, ne pa strukturiran PDF

 

Packaging note

Adapter živi v Lib\Addons\DevExpress\ in ni del glavnih paketov HotPDF*.dpk, zato se odvisnost DevExpress ExpressPrinting naloži samo v projekte, ki adapter vključijo. Preizkus dima (smoke_dx_hotpdf.dpr) je v isti mapi kot enota

 

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