Suporte à exportação de TDBGrid
A unit add-on dbGridHotPDFExport (Lib\addons\DBGrid) grava as colunas visíveis e todas as linhas do dataset de um TDBGrid numa tabela PDF. Ela cria, preenche e salva o próprio documento THotPDF, de modo que a grid é a única entrada de que precisa
Pontos de entrada
DBGridHotPDFExportToFile(AGrid, AOutputFileName[, AOptions])grava o PDF num arquivoDBGridHotPDFExportToStream(AGrid, AOutputStream[, AOptions])o grava num stream, por meio de um arquivo temporário em%TEMP%DBGridHotPDFDefaultOptionsretorna um recordTDBGridHotPDFExportOptionscom os padrões: A4 em pontos (595 x 842), margens de 36 pontos, linhas de 22 pontos, uma linha de cabeçalho de 24 pontos, Arial 9 com um título de 14 pontos, um cabeçalhoclBtnFacee linhas alternadas$00F5F5F5TDBGridHotPDFExporté a mesma exportação como componente na página de paleta HotPDF (registrado pordbGridHotPDFDesign): definaGrideOutputFileNamee então chameExportToFileouExportToStream. Cada campo de opção é uma propriedade published;ResetOptionsrestaura os padrões
O que é exportado
- Colunas visíveis da grid com um campo, na ordem da grid, com os captions de título delas, ou os campos visíveis do dataset quando a grid não tem colunas; as larguras de coluna mantêm as proporções da grid na largura imprimível
- Cada record de
FirstatéEof, usando oDisplayTextde cada campo; um texto de célula que não cabe é cortado e termina em... - Todo texto usa
FontName, que precisa ter glifos para os dados: a Arial padrão mostra texto em chinês, japonês ou coreano como caixas vazias, então defina uma fonte CJK como Microsoft YaHei para esses dados - Uma nova página começa quando a próxima linha cruzaria a margem inferior, e a linha de cabeçalho se repete em todas as páginas. O título (
Title, senão oNameda grid) é desenhado uma única vez, na primeira página, enquantoIncludeTitleé True Title,Author,Subject,Keywords,PDFVersion(padrão pdf17),PDFACompliance,PDFXComplianceeCompressionsão passados ao documento
Estado do dataset
- A exportação chama
DisableControlsenquanto percorre o dataset eEnableControlsdepois, de modo que os controles vinculados não repintam a cada linha - O record atual é salvo como bookmark primeiro e restaurado no final, inclusive quando a exportação falha
- Uma grid nil, um nome de arquivo vazio, uma grid sem dataset, um dataset inativo ou uma grid sem colunas de dados visíveis levantam uma exceção em vez de retornar False
Exemplo
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;