|
QuickReport-vientisuodatin, joka käyttää HotPDF-kirjastoa taustalla olevana PDF-taustaohjelmana QuickReportin oman QRPDFFilter-suodattimen sijaan. Tarkoitettu projekteihin, joissa HotPDF on jo upotettuna ja halutaan yksi PDF-taustaohjelma koko sovellukseen
Delphi declaration:
type
TQRHotPDFExportFilter = class(TQRExportFilter)
public
constructor Create(Filename: string); override;
procedure SetOutputStream(AStream: TStream);
property Title, Author, Subject, Keywords: string;
property PDFVersion: TPDFVersType;
property Compressed: Boolean;
property CompressionLevel: TPDFCompressionLevel;
end;
Kuvaus
TQRHotPDFExportFilter periytyy luokasta TQRExportFilter, joten se sopii tavalliseen MyReport.ExportToFilter(MyExporterInstance) -työnkulkuun ilman mitään muutoksia QuickReport-ytimeen. Koska TQRExportFilter ei periydy luokasta TComponent (se on tavallinen luokka QuickReportin rakenteessa), IDE-komponenttirekisteröintiä ei ole - kutsujat luovat TQRHotPDFExportFilter-instanssin suoraan kutsulla Create('out.pdf')
QuickReport hahmontaa jokaisen valmistellun sivun TMetafile-tiedostoksi, joka välimuistitetaan kohteessa QRPrinter.PageList. Sen sijaan, että toteutettaisiin koko komponenttikohtainen TextOut- / AcceptGraphic- / AcceptBand-takaisinkutsujoukko, sovitin jättää ne huomiotta (tyhjätoimintoylikuormitukset) ja kerää sivukohtaiset metafilet kohdassa Finish:
1. Start(PaperWidth, PaperHeight, Font) – luo THotPDF-instanssin, asettaa metatiedot, kutsuu metodia BeginDoc ja tallentaa arvon (PaperWidth, PaperHeight), jotta metodi Finish voi muotoilla sivut oikein
2. NewPage / EndPage / TextOut / AcceptGraphic – ei toimenpiteitä (metafilessä on jo valmiiksi renderöity sisältö)
3. Finish – jokaista välimuistissa olevaa QRPrinter.PageList[i] -metafileä kohden lisää (tai käyttää uudelleen) HotPDF-sivun, joka on mitoitettu pisteinä arvoihin PaperWidth / PaperHeight, ja kutsuu metodia ShowEnhancedMetafile. Sen jälkeen suoritetaan EndDoc ja vapautus
Ominaisuudet
Title / Author / Subject / Keywords – dokumentin metatiedot. Kun Title on tyhjä, sovitin palaa arvoon Filename, joten PDF-dokumentilla on aina ei-tyhjä otsikko. Aseta ennen metodin ExportToFilter kutsumista
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 metodia ExportToFilter. Sisäisesti käytetään väliaikaistiedostoa, koska HotPDF tallentaa metodissa EndDoc; tavut striimataan takaisin metodissa Finish
Typical workflow
Filter := TQRHotPDFExportFilter.Create('Report.pdf');
try
Filter.Title := 'Monthly Statement';
Filter.PDFVersion := pdf17;
QuickRep1.ExportToFilter(Filter);
finally
Filter.Free;
end;
Capabilities preserved
Vektori- ja rasterisivun sisältö, jonka QuickReportin standardi esikatselu- / tulostinputki hahmontaa. GDI-ratkaistut tekstijonot. Sivun koko noudattaa leveyttä PaperWidth ja korkeutta PaperHeight, jotka QuickReport välittää metodille Start
Metafile-sillan rajoitukset
Koska sivut kaapataan kehittyneinä metafileinä, QuickReport-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ä QuickReport renderöi, ei rakenteellinen PDF
Packaging note
Sovitin sijaitsee polussa Lib\Addons\QuickReport\ eikä se kuulu HotPDF*.dpk-pääpaketteihin, joten QuickReport-riippuvuus tuodaan vain niihin projekteihin, jotka ottavat sovittimen käyttöön. Savutestaus (smoke_qr_hotpdf.dpr) sijaitsee yksikön rinnalla
Katso myös: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support
|