Поддержка экспорта TDBGrid
Аддон-юнит dbGridHotPDFExport (Lib\addons\DBGrid) пишет видимые колонки и все строки датасета TDBGrid в PDF-таблицу. Он сам создаёт, заполняет и сохраняет свой документ THotPDF, так что из входных данных ему нужен только грид
Точки входа
DBGridHotPDFExportToFile(AGrid, AOutputFileName[, AOptions])пишет PDF в файлDBGridHotPDFExportToStream(AGrid, AOutputStream[, AOptions])пишет его в поток, через временный файл в%TEMP%DBGridHotPDFDefaultOptionsвозвращает записьTDBGridHotPDFExportOptionsсо значениями по умолчанию: A4 в пунктах (595 x 842), поля 36 пунктов, строки по 22 пункта, строка шапки 24 пункта, Arial 9 с заголовком 14 пунктов, шапкаclBtnFaceи чередующиеся строки$00F5F5F5TDBGridHotPDFExport— тот же экспорт, но в виде компонента на палитре HotPDF (регистрируетdbGridHotPDFDesign): задайтеGridиOutputFileName, затем вызовитеExportToFileилиExportToStream. Каждое поле настроек — опубликованное свойство;ResetOptionsвозвращает значения по умолчанию
Что экспортируется
- Видимые колонки грида, у которых есть поле, в порядке грида и с их заголовками; если у грида колонок нет — видимые поля датасета; ширины колонок сохраняют пропорции грида по всей печатной ширине
- Каждая запись от
FirstдоEof, с использованиемDisplayTextкаждого поля; не поместившийся текст ячейки обрезается и заканчивается на... - Весь текст рисуется шрифтом
FontName, в котором должны быть глифы для данных: дефолтный Arial показывает китайский, японский и корейский текст пустыми квадратами, поэтому для таких данных задайте CJK-шрифт, например Microsoft YaHei - Новая страница начинается, когда очередная строка пересекла бы нижнее поле, и строка шапки повторяется на каждой странице. Заголовок (
Title, иначеNameгрида) рисуется один раз, на первой странице, покаIncludeTitleравен True Title,Author,Subject,Keywords,PDFVersion(по умолчанию pdf17),PDFACompliance,PDFXComplianceиCompressionпередаются в документ
Состояние датасета
- Экспорт вызывает
DisableControls, пока идёт по датасету, иEnableControlsпосле, так что привязанные контролы не перерисовываются на каждой строке - Текущая запись сначала сохраняется закладкой (bookmark) и восстанавливается в конце, в том числе при неудачном экспорте
- Nil-грид, пустое имя файла, грид без датасета, неактивный датасет или грид без видимых колонок с данными приводят к исключению, а не к возврату 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;