可視化報(bào)告生成器FastReport VCL功能指南:從Delphi / C ++ Builder / Lazarus制作PDF
報(bào)表生成器FastReport VCL是用于在您的軟件中集成商務(wù)智能的現(xiàn)代解決方案。它提供了可視化模板設(shè)計(jì)器,可以訪問(wèn)最受歡迎的數(shù)據(jù)源,報(bào)告引擎,預(yù)覽,將過(guò)濾器導(dǎo)出為30多種格式,并可以部署到云,Web,電子郵件和打印中。
近日,F(xiàn)astReport VCL升級(jí)到v6.6版,在此版本中,所有面板隱藏在“Data Tree”數(shù)據(jù)樹,添加了新的線性條形碼類型:Pharmacode,改進(jìn)了預(yù)覽窗口中的搜索,感興趣的朋友可點(diǎn)擊下方按鈕下載最新版。
通常建議使用專門的解決方案,PDF轉(zhuǎn)換器(例如itext,Synopse PDF Engine,PowerPDF,HotPDF,PDF Creator Pilot,PDFtoolkit VCL,Debenu Quick PDF庫(kù)等)。
在Delphi中創(chuàng)建一個(gè)新的VCL應(yīng)用程序
將FastReport選項(xiàng)卡中的TfrxReport,TfrxPDFExport和TButton組件添加到窗體。
雙擊TfrxReport,輸入FR設(shè)計(jì)器。創(chuàng)建一個(gè)新報(bào)告(文件->新建報(bào)告)。將TfrxMemoView和文本“ Test text”添加到MasterData1。
設(shè)置MasterData1.RowCount = 200,退出設(shè)計(jì)器并為Button1編寫OnClick處理程序:
procedure TForm1.Button1Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} if frxReport1.PrepareReport then frxReport1.ShowPreparedReport; {and show preview window} end;
實(shí)際上,此代碼足以進(jìn)行全面的工作,生成報(bào)告并導(dǎo)出為PDF?,F(xiàn)在,在設(shè)計(jì)時(shí)創(chuàng)建一個(gè)任何復(fù)雜的文檔(您可以連接任何數(shù)據(jù)源并從那里獲取信息)–表格,列表,插圖,地圖,QR碼–為此,請(qǐng)確保首先將適當(dāng)?shù)慕M件添加到項(xiàng)目中(否則它們將在運(yùn)行時(shí)中不存在),帶有錨點(diǎn),內(nèi)聯(lián)鏈接和目錄的復(fù)合和多頁(yè)文檔-您需要的任何大小的文檔-一頁(yè)收據(jù),一頁(yè)目錄,年度報(bào)告工廠員工動(dòng)靜數(shù)千頁(yè)。并且不要忘記將PDF導(dǎo)出組件放到我們的項(xiàng)目中!啟動(dòng)并單擊表單上的唯一按鈕。
從Delphi應(yīng)用程序中保存PDF
點(diǎn)擊按鈕–在下面的預(yù)覽中調(diào)用導(dǎo)出,將展示如何通過(guò)代碼執(zhí)行所有操作,只需點(diǎn)擊鏈接即可– 從代碼發(fā)送到PDF)。隨即,我們看到出現(xiàn)的PDF設(shè)置對(duì)話框。
如您所見,任何專業(yè)的PDF轉(zhuǎn)換器都會(huì)羨慕這種選擇!我們可以選擇將文檔的哪些頁(yè)面發(fā)送到PDF,使用哪個(gè)版本的PDF,壓縮可以減少生成的文件的大小,嵌入字體可以保存任何第三方設(shè)備的文檔外觀。我們可以選擇是否將背景附加到PDF文檔。
我們的PDF也可以針對(duì)打印進(jìn)行優(yōu)化(圖像質(zhì)量會(huì)更好,但是尺寸會(huì)更大)或僅針對(duì)屏幕顯示。我們可以設(shè)置生成的PDF是否將包含原始目錄中的外部目錄(在我的示例中沒有,因此無(wú)法選擇),透明度,位圖圖像的壓縮率。
另一個(gè)功能–所有文本(包括RTF)在保存為PDF時(shí)都會(huì)進(jìn)行矢量化處理,即在保留從PDF復(fù)制一部分文本的能力的同時(shí),質(zhì)量不會(huì)喪失(除非您禁止在下面提到的適當(dāng)選項(xiàng))。
保存到:我們將確切發(fā)送PDF(本地文件或電子郵件或云)的位置。導(dǎo)出后打開-默認(rèn)情況下,分配給操作系統(tǒng)的PDF查看器將在導(dǎo)出后立即打開結(jié)果文件(例如,Adobe Acrobat Reader)。
我們可以將生成的文檔導(dǎo)出為存檔格式,例如PDF / A-1a,PDF / A-1b,PDF / A-2a,PDF / A-2b,PDF / A-3a,PDF / A-3b。設(shè)計(jì)用于以電子形式保持文檔不變。例如,在此標(biāo)準(zhǔn)中,文檔中存在的字體,圖像,第三方對(duì)象會(huì)自動(dòng)嵌入到文檔中。這些標(biāo)準(zhǔn)之一經(jīng)常在大型組織中用于電子文檔管理。
非存檔PDF格式也有多個(gè)版本。
服務(wù)信息,也將轉(zhuǎn)至PDF文件:標(biāo)題,作者,主題,關(guān)鍵字(您可以將PDF上傳到網(wǎng)絡(luò),它將被完美索引),PDF創(chuàng)作工具,文檔制作者。
安全性–使用密碼(使用RC4加密)保護(hù)文檔免于打開。禁止打印和修改文檔,復(fù)制文本和圖形,添加或修改文本注釋的功能。
打開文檔時(shí)設(shè)置PDF查看器:隱藏工具欄,隱藏菜單欄,隱藏窗口用戶界面,適合窗口,中心窗口,打印比例。通常,在導(dǎo)出時(shí),我使用默認(rèn)設(shè)置的參數(shù),但是這次我檢查了所有參數(shù)。
從Delphi或Lazarus代碼發(fā)送到PDF
procedure TForm1.Button1Click(Sender: TObject); begin {Generate a report. The report must be generated before exporting} frxReport1.PrepareReport(); {Set the range of pages to export. By default, all pages of the generated report are exported.} frxPDFExport1.PageNumbers := '2-3'; {Set the PDF standard TPDFStandard = (psNone, psPDFA_1a, psPDFA_1b, psPDFA_2a, psPDFA_2b, psPDFA_3a, psPDFA_3b); It is required to add the frxExportPDFHelpers module to the uses list: uses frxExportPDFHelpers;} frxPDFExport1.PDFStandard := psNone; {You can set the PDF standard version for PDFStandard = psNone TPDFVersion = (pv14, pv15, pv16, pv17); It is required to add the frxExportPDFHelpers module to the uses list: uses frxExportPDFHelpers;} frxPDFExport1.PDFVersion := pv17; {To get smaller file size, you can set the compression} frxPDFExport1.Compressed := True; {Set whether to embed fonts in the resulting document. Embedding fonts significantly increases the size of the resulting document} frxPDFExport1.EmbeddedFonts := False; {Set whether we need to export the background image} frxPDFExport1.Background := True; {Disable export of objects with optimization for printing. With option enabled images will be high-quality but 9 times larger in volume} frxPDFExport1.PrintOptimized := False; {Set whether the resulting PDF will contain an external table of contents, as in the original report} frxPDFExport1.Outline := False; {Set whether to export images with transparency} frxPDFExport1.Transparency := True; {You can set the desired DPI of images. Enabling this option disables SaveOriginalImages option, which allows you to save images in their original form} frxPDFExport1.PictureDPI := 150; {Set the compression ratio of bitmap images} frxPDFExport1.Quality := 95; {Set whether to open the resulting file after export} frxPDFExport1.OpenAfterExport := False; {Set whether to display export progress (show which page is currently being exported)} frxPDFExport1.ShowProgress := False; {Set whether to display a dialog box with export filter settings} frxPDFExport1.ShowDialog := False; {Set the name of the resulting file. Please note that if you do not set the file name and disable the export filter dialog box, the file name selection dialog will still be displayed} frxPDFExport1.FileName := 'C:\Output\test.pdf'; {Fill in the corresponding fields of the Information tab} frxPDFExport1.Title := 'Your Title'; frxPDFExport1.Author := 'Your Name'; frxPDFExport1.Subject := 'Your Subject'; frxPDFExport1.Keywords := 'Your Keywords'; frxPDFExport1.Creator := 'Creator Name'; frxPDFExport1.Producer := 'Producer Name'; { Fill in the corresponding fields of the Security tab } frxPDFExport1.UserPassword := 'User Password'; frxPDFExport1.OwnerPassword := 'Owner Password'; frxPDFExport1.ProtectionFlags := [ePrint, eModify, eCopy, eAnnot]; {Set the Viewer settings (Viewer tab)} frxPDFExport1.HideToolbar := False; frxPDFExport1.HideMenubar := False; frxPDFExport1.HideWindowUI := False; frxPDFExport1.FitWindow := False; frxPDFExport1.CenterWindow := False; frxPDFExport1.PrintScaling := False; {Export the report} frxReport1.Export(frxPDFExport1); end;
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報(bào)表2019最新資源盤點(diǎn)】,查找需要的教程資源。如果您有任何疑問(wèn)或需求,請(qǐng)隨時(shí)加入FastReport技術(shù)交流群(783996712),我們很高興為您提供查詢和咨詢。