TDBGrid export support
dbGridHotPDFExport 附加單元(Lib\addons\DBGrid)把 TDBGrid dataset 的可見欄位與所有資料列寫成 PDF 表格。它會自行建立、填寫並儲存一個 THotPDF 文件,所以 grid 是它唯一需要的輸入
進入點
DBGridHotPDFExportToFile(AGrid, AOutputFileName[, AOptions])把 PDF 寫入檔案DBGridHotPDFExportToStream(AGrid, AOutputStream[, AOptions])把 PDF 寫入串流,途中會經過%TEMP%裡的暫存檔DBGridHotPDFDefaultOptions回傳帶預設值的TDBGridHotPDFExportOptions記錄:A4(點,595 x 842)、36 點邊界、22 點資料列、24 點標頭列、Arial 9 加 14 點標題、clBtnFace標頭與$00F5F5F5交替列底色TDBGridHotPDFExport是同一套匯出,以元件形式放在 HotPDF 面板頁(由dbGridHotPDFDesign註冊):設定Grid與OutputFileName,再呼叫ExportToFile或ExportToStream。每個選項欄位都是 published property;ResetOptions可還原預設值
匯出內容
- 帶欄位的可見 grid 欄,按 grid 順序輸出並使用其標題文字;grid 沒有欄位定義時輸出 dataset 的可見欄位;欄寬在可列印寬度內保持 grid 的比例
- 從
First到Eof的每一筆記錄,使用各欄位的DisplayText;放不下的儲存格文字會被截斷並以...結尾 - 所有文字使用
FontName,該字型必須含有資料所需的 glyph:預設的 Arial 會把中文、日文或韓文顯示成空框,這類資料請設定 Microsoft YaHei 之類的 CJK 字型 - 下一列會越過下邊界時就換新頁,標頭列在每一頁重複。標題(
Title,否則用 grid 的Name)在IncludeTitle為 True 時只在第一頁繪製一次 Title、Author、Subject、Keywords、PDFVersion(預設 pdf17)、PDFACompliance、PDFXCompliance與Compression會傳遞給文件
Dataset 狀態
- 匯出走訪 dataset 期間會呼叫
DisableControls,結束後呼叫EnableControls,繫結的控制項不會逐列重繪 - 目前記錄會先以 bookmark 儲存,最後還原——匯出失敗時也一樣
- nil grid、空檔名、沒有 dataset 的 grid、未開啟的 dataset,或沒有可見資料欄的 grid,都會引發例外而不是回傳 False
範例
uses
dbGridHotPDFExport;
var
Options: TDBGridHotPDFExportOptions;
begin
Options:= DBGridHotPDFDefaultOptions;
Options.Title:= 'Customers';
Options.PageWidth:= 842; // A4 landscape
Options.PageHeight:= 595;
DBGridHotPDFExportToFile(DBGrid1, 'Customers.pdf', Options);
end;