TppHotPDFDevice

ReportBuilder-sovitin (Lib\Addons\ReportBuilder\ppHotPDFDevice.pas)

FastReport adapter QuickReport adapter DevExpress adapter

ReportBuilder-laiteluokka, joka käyttää HotPDF:ää taustajärjestelmän PDF-moottorina ReportBuilderin oman ppPDFDevice-laitteen sijaan. Tarkoitettu projekteille, jotka jo sisältävät HotPDF-moottorin ja haluavat yhden yhteisen PDF-taustajärjestelmän koko sovellukseen

Delphi declaration:

type

TppHotPDFDevice = class(TppGraphicsDevice)

public

class function DeviceName: String; override;

procedure StartJob; override;

procedure EndJob; override;

procedure CancelJob; override;

procedure SetOutputStream(AStream: TStream);

property FileName: string;

property Title, Author, Subject, Keywords: string;

property PDFVersion: TPDFVersType;

property Compressed: Boolean;

property CompressionLevel: TPDFCompressionLevel;

end;

Kuvaus

TppHotPDFDevice periytyy luokasta TppGraphicsDevice (yksi taso luokkien TppCustomScreenDevice / TppImageDevice yläpuolella), joten se sijoittuu ReportBuilderin laiteketjuun, kun se määritetään kohteelle TppReport.PrinterDevice tai kun sitä käytetään julkaisijalaitteena kohteessa TppPublisher. DeviceName ilmoitetaan arvona 'HotPDF'. Koska laitteen rekisteröinti ReportBuilderissa tehdään kohteen ppRptDeviceMap kautta eikä metodilla RegisterComponents, IDE-komponenttirekisteröintiä ei ole - kutsujat luovat instanssin luokasta TppHotPDFDevice suoraan

Jokainen laitteen TppGraphicsDevice.ReceivePage kautta tuleva sivu piirretään väliaikaiselle TMetafileCanvas-kankaalle (luodaan metodissa BeforeRenderPage, viimeistellään metodissa AfterRenderPage). Kaapattu TMetafile syötetään sitten HotPDF:n automaattisesti skaalautuvaan ShowEnhancedMetafile-tuojaohjelmaan:

1. StartJob luo THotPDF-instanssin, asettaa metatiedot ja kutsuu metodia BeginDoc

2. BeforeRenderPage luo TMetafile-objektin, jonka koko on spWidth x spHeight, sekä TMetafileCanvas-olion ja asettaa sen perityksi kohteeksi Canvas

3. RenderPage (peritty) käy läpi komennot DrawCommands ja reitittää ne kohteen GraphicsContext kautta metafile-kankaallemme

4. AfterRenderPage viimeistelee metafilen (vapauttaa kankaan), lisää uuden HotPDF-sivun, jonka koko on mmWidth x mmHeight (muunnettuna PDF-pisteiksi), ja toistaa metafilen metodin ShowEnhancedMetafile kautta

5. EndJob kutsuu metodia HotPDF.EndDoc; jos tulostus on Stream, kopioi tavut sisäisesti kirjoitetusta väliaikaistiedostosta

Ominaisuudet

FileName – kohde-PDF-tiedoston polku. Käytetään, ellei SetOutputStream ole määrittänyt virtaa

Title / Author / Subject / Keywords – dokumentin metatiedot. Kun Title on tyhjä, laite palaa arvoon FileName, joten PDF-dokumentilla on aina ei-tyhjä otsikko

PDFVersion – PDF-määrityksen taso, johon dokumentin tulisi kohdistua. Oletusarvo on pdf17

Compressed – HotPDF-virtapakkaus päällä (oletus True). Aseta False diagnostiikka-PDF-tiedostoja varten

CompressionLevel – FlateDecode-taso. Oletusarvona on clDefault

SetOutputStream(AStream) – reitittää PDF-tavut kohteeseen AStream levylle kirjoittamisen sijaan. Kutsu ennen kuin raportti käynnistää vaiheen StartJob

Typical workflow

Dev := TppHotPDFDevice.Create(nil);

try

Dev.FileName := 'Report.pdf';

Dev.Title := 'Monthly Statement';

Dev.PDFVersion := pdf17;

ppReport1.DeviceType := 'HotPDF';

ppReport1.PrinterDevice := Dev;

ppReport1.Print;

finally

Dev.Free;

end;

Capabilities preserved

Vektori- ja rasterisivun sisältö, jonka ReportBuilderin standardi piirtokomentoputki hahmontaa. GDI-ratkaistut tekstijonot. Oletusarvoinen 200 DPI:n metafilen tallennus (määritettävissä perityn ominaisuuden PixelsPerInch kautta) tuottaa tulostuslaatuista jälkeä ilman valtavia tiedostoja

Metafile-sillan rajoitukset

Koska sivut kaapataan kehittyneinä metafileinä, ReportBuilder-kohtaisia PDF-ominaisuuksia, jotka vaativat rakennetietoa (AcroForm-kentät, nimetyt kohteet, jäsennykset, PDF/A- tai PDF/X-yhteensopivuusportit), ei välitetä eteenpäin. Tuloste on uskollinen visuaalinen kopio siitä, mitä ReportBuilder renderöi, ei rakenteellinen PDF

Packaging note

Laite sijaitsee polussa Lib\Addons\ReportBuilder\ eikä se kuulu HotPDF*.dpk-pääpaketteihin, joten ReportBuilder-riippuvuus tuodaan vain niihin projekteihin, jotka ottavat laitteen käyttöön. Savutestaus (smoke_pp_hotpdf.dpr) sijaitsee yksikön rinnalla

Katso myös: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support