dxHotPDFExportReportLink

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

 

FastReport adapter  QuickReport adapter  ReportBuilder device

DevExpress ExpressPrinting System (XtraPrinting / XtraReports / cxGrid printable links / ir panašūs) PDF eksportavimo adapteris, kuris vietoj pačio DevExpress dxPSExportToPDF / TdxPSPDFExport generatoriaus naudoja HotPDF kaip pagrindinį PDF variklį. Skirtas projektams, kurie jau įtraukia HotPDF ir nori vieno PDF pagrindo visai programai

 

Parinkčių įrašas:

type

  TdxHotPDFExportOptions = record

    Title, Author, Subject, Keywords: string;

    PDFVersion : TPDFVersType;  // default pdf17

    Compression: TPDFCompressionLevel;  // default clDefault

    RenderDPI  : Integer;  // default 200

  end;

 

function dxHotPDFDefaultOptions: TdxHotPDFExportOptions;

 

Failais paremtos įėjimo vietos:

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string): Boolean; overload;

 

Srautais paremtos įėjimo vietos:

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream): Boolean; overload;

 

Aprašas

DevExpress spausdinimo sistemos centras yra TBasedxReportLink - abstrakti jungtis, kuri susieja spausdinamą komponentą (cxGrid, cxRichEdit, cxScheduler, cxPivotGrid ir panašius) su TdxComponentPrinter. Spausdintuvas / jungtis sudaro puslapius, tada pateikia saugomą PaintPage(ACanvas, APageBounds, APageIndex, AContinuousIndex, AZoomFactor) metodą, kuris nupiešia vieną puslapį į bet kurį TCanvas

 

Šis adapteris atkartoja pačios DevExpress TdxPSPDFReportExportProvider.Build kilpą, tačiau vietoj PaintPage išvesties nukreipimo į DevExpress PDF drobę jis ją nukreipia į TMetafileCanvas. Gautas metafailas tada perduodamas į HotPDF ShowEnhancedMetafile automatinio mastelio importuotoją

 

1. Kviestinė pusė iškviečia dxHotPDFExportReportLinkToFile arba dxHotPDFExportReportLinkToStream su paruoštu TBasedxReportLink

2. Adapteris kviečia AReportLink.RebuildReport, kad sudarytų puslapius

3. Kiekvienam puslapio indeksui prašo saito RenderInfo.GetActualPageRenderInfo, apskaičiuoja puslapio dydį PDF taškais (naudodamas pačios DevExpress PointsPerInch / UnitsPerInch santykį), sukuria TMetafile pasirinktu atvaizdavimo DPI ir atvaizduoja puslapį per PaintPage(MetaCanvas, ...)

4. Pridedamas naujas HotPDF puslapis arba pakartotinai naudojamas automatiškai sukurtas pirmasis puslapis, jo dydis nustatomas pagal apskaičiuotus taškų matmenis, o metafailas paleidžiamas per ShowEnhancedMetafile

5. HotPDF.EndDoc įrašo PDF; srauto perkrovoms laikinas failas tuomet nukopijuojamas į kviestinės pusės pateiktą TStream

 

Parinktys

Title / Author / Subject / Keywords - dokumento metaduomenys. Kai Title tuščias, adapteris pereina prie AReportLink.ReportTitle.Text, paskui prie AReportLink.Name, kad PDF visada turėtų netuščią pavadinimą

PDFVersion - PDF specifikacijos lygis, į kurį turi taikytis dokumentas. Numatytoji reikšmė yra pdf17

Compression - FlateDecode lygis. Numatytoji reikšmė yra clDefault

RenderDPI - pikselių tankis, naudojamas rasterizuojant kiekvieną puslapį per TMetafileCanvas. Didesnė reikšmė = ryškesnis tekstas ir linijos, bet didesnis metafailas ir PDF. 200 (numatytoji reikšmė) duoda spausdinimo kokybės rezultatą be milžiniškų failų. Reikšmės ≤ 0 suapvalinamos iki 200

 

Tipinė darbo eiga

 

dxComponentPrinter1.CurrentLink := cxGridReportLink1;

dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf');

 

Arba su pasirinktinėmis parinktimis:

 

Opts := dxHotPDFDefaultOptions;

Opts.Title := 'Q1 Sales';

Opts.RenderDPI := 300;

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

 

Palaikomos nuorodų šeimos

Bet kuris TBasedxReportLink palikuonis. Tai apima cxGrid, cxRichEdit, cxScheduler, cxPivotGrid ir bet kokias pasirinktines nuorodas, paveldėtas iš tos pačios bazinės klasės. Adapteris nepriklauso nuo konkretaus saito tipo, nes PaintPage sutartis apibrėžta bazėje

 

Išsaugomos galimybės

Kiekvienos DevExpress nuorodų šeimos išvedamas vektorinį ir rastrinį puslapio turinys (cxGrid, cxScheduler, cxRichEdit, cxPivotGrid, pasirinktinės nuorodos). GDI išspręstas teksto eilutes (DevExpress tekstą piešia per TCanvas; metafailas patikimai įrašo GDI teksto kvietimus)

 

Metafailo tilto ribojimai

Kadangi puslapiai užfiksuojami kaip išplėstiniai metafailai, DevExpress specifinės PDF funkcijos, kurioms reikia struktūrinės informacijos (interaktyvūs AcroForm laukai, vardiniai tikslai, žymės / kontūrai, PDF/A arba PDF/X atitikties vartai), nėra perduodamos. Išvestis yra tikslus to, ką DevExpress pateikia, vizualus atvaizdas, o ne struktūrinis PDF

 

Paketavimo pastaba

Adapteris yra Lib\Addons\DevExpress\ aplanke ir nėra pagrindinių HotPDF*.dpk paketų dalis, todėl DevExpress ExpressPrinting priklausomybė įtraukiama tik projektuose, kurie sąmoningai renkasi šį adapterį. Šalia modulio yra smoke testas (smoke_dx_hotpdf.dpr)

 

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