dxHotPDFExportReportLink

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

 

FastReport adapter  QuickReport adapter  ReportBuilder device

DevExpress ExpressPrinting System (XtraPrinting / XtraReports / cxGrid printable links / og lignende) PDF-eksportadapter som bruker HotPDF som underliggende PDF-backend i stedet for DevExpress' egen dxPSExportToPDF / TdxPSPDFExport-emitter. Den er laget for prosjekter som allerede bruker HotPDF og vil ha én felles PDF-backend i hele programmet

 

Alternativrecord:

type

  TdxHotPDFExportOptions = record

    Title, Author, Subject, Keywords: string;

    PDFVersion : TPDFVersType;  // default pdf17

    Compression: TPDFCompressionLevel;  // default clDefault

    RenderDPI  : Integer;  // default 200

  end;

 

function dxHotPDFDefaultOptions: TdxHotPDFExportOptions;

 

Filbaserte inngangspunkter:

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string): Boolean; overload;

 

Strømbaserte inngangspunkter:

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream): Boolean; overload;

 

Beskrivelse

DevExpresss utskriftssystem er sentrert rundt TBasedxReportLink - den abstrakte koblingen som forbinder en utskriftsbar komponent (cxGrid, cxRichEdit, cxScheduler, cxPivotGrid og lignende) med en TdxComponentPrinter. Skriveren / koblingen setter sammen sider og eksponerer deretter en beskyttet PaintPage(ACanvas, APageBounds, APageIndex, AContinuousIndex, AZoomFactor)-metode som tegner én side til en hvilken som helst TCanvas

 

Denne adapteren speiler løkken i DevExpresss egen TdxPSPDFReportExportProvider.Build, men i stedet for å sende PaintPage-utdata inn i en DevExpress PDF-kanvas, sender den dem til en TMetafileCanvas. Den resulterende metafil-en mates deretter inn i HotPDFs ShowEnhancedMetafile-importør med automatisk skalering:

 

1. Kalleren starter dxHotPDFExportReportLinkToFile eller dxHotPDFExportReportLinkToStream med den klargjorte TBasedxReportLink

2. Adapteren kaller AReportLink.RebuildReport for å sette sammen sider

3. For hver sideindeks ber den koblingen om RenderInfo.GetActualPageRenderInfo, beregner sidestørrelsen i PDF-punkter ved å bruke DevExpresss egen PointsPerInch / UnitsPerInch-ratio, bygger en TMetafile med valgt render-DPI og rendrer siden gjennom PaintPage(MetaCanvas, ...)

4. En ny HotPDF-side legges til, eller den automatisk opprettede første siden gjenbrukes, dimensjonert til de beregnede punktmålene, og metafilen spilles av via ShowEnhancedMetafile

5. HotPDF.EndDoc skriver PDF-en; for strømoverlastingene kopieres den midlertidige filen deretter inn i den kallersupplerte TStream

 

Alternativer

Title / Author / Subject / Keywords - dokumentmetadata. Når Title er tom, faller adapteren tilbake til AReportLink.ReportTitle.Text, deretter til AReportLink.Name, slik at PDF-en alltid har en ikke-tom tittel

PDFVersion - PDF-spesifikasjonsnivået dokumentet skal sikte mot. Standard er pdf17

Compression - FlateDecode-nivå. Standard er clDefault

RenderDPI - pikseltetthet som brukes når hver side rasteriseres gjennom TMetafileCanvas. Høyere = skarpere tekst og linjer, men større metafil og PDF. 200, som er standard, gir utskriftskvalitet uten enorme filer. Verdier ≤ 0 klamres til 200

 

Typisk arbeidsflyt

 

dxComponentPrinter1.CurrentLink := cxGridReportLink1;

dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf');

 

Eller med egendefinerte alternativer:

 

Opts := dxHotPDFDefaultOptions;

Opts.Title := 'Q1 Sales';

Opts.RenderDPI := 300;

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

 

Støttede koblingsfamilier

Enhver etterkommer av TBasedxReportLink. Dette omfatter cxGrid, cxRichEdit, cxScheduler, cxPivotGrid, pluss eventuelle egendefinerte koblinger som er avledet fra samme baseklasse. Adapteren er ikke avhengig av den spesifikke koblingstypen fordi PaintPage-kontrakten er definert på basen

 

Bevarte egenskaper

Vektor- og raster-sideinnhold som sendes ut av hver DevExpress-koblingsfamilie (cxGrid, cxScheduler, cxRichEdit, cxPivotGrid, egendefinerte koblinger). Tekststrenger løst av GDI (DevExpress gjengir tekst via TCanvas; metafilen registrerer GDI-tekstkallene trofast)

 

Begrensninger i metafile-broen

Fordi sider fanges som enhanced metafiles, blir ikke DevExpress-spesifikke PDF-funksjoner som krever strukturell informasjon, som interaktive AcroForm-felt, navngitte destinasjoner, bokmerker / disposisjoner eller PDF/A- og PDF/X-samsvarskontroller, videreført. Utdataene er en tro visuell gjengivelse av det DevExpress rendrer, ikke en strukturert PDF

 

Pakkingsnotat

Adapteren ligger i Lib\Addons\DevExpress\ og er ikke en del av hovedpakkene HotPDF*.dpk, så DevExpress ExpressPrinting-avhengigheten trekkes bare inn av prosjekter som velger adapteren. En smoke-test (smoke_dx_hotpdf.dpr) ligger ved siden av unit-en

 

Se også: TfrxHotPDFExport, TQRHotPDFExportFilter, TppHotPDFDevice, THPDFPage.ShowMetafile, Forbedret EMF/WMF-støtte