|
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
|