Для печати таблицы предназначен интерфейс ITabSheetPrinter.
Приведен пример настройки параметров страницы и печати регламентного отчета с идентификатором «REPORT_TAB».
В результате выполнения примера будет напечатана первая страница отчета.
Для выполнения примера добавьте ссылки на системные сборки: Drawing, Metabase, Report, Tab.
Sub TablePrint;
Var
mb: IMetabase;
Report: IPrxReport;
Table: ITabSheet;
SheetPrinter: ITabSheetPrinter;
PageSettings: ITabPageSettings;
pCount: Integer;
Image: IGxImage;
Graph: IGxGraphics;
Rect: IGxRect;
Color: IGxColor;
Printer: IGxDocumentPrinter;
Begin
// Получаем текущий репозиторий
mb := MetabaseClass.Active;
// Получаем регламентный отчет
Report := mb.ItemById("REPORT_TAB").Bind As IPrxReport;
// Получаем таблицу
Table := (Report.ActiveSheet As IPrxTable).TabSheet;
// Получаем параметры печати
SheetPrinter := Table.CreatePrinter;
// Задаем отступы для первой страницы
SheetPrinter.FirstPageHeaderGap := 20;
SheetPrinter.FirstPageFooterGap := 20;
SheetPrinter.DifferentFirstPageGap := True;
// Задаем отступы для четных страниц
SheetPrinter.EvenHeaderGap := 10;
SheetPrinter.EvenFooterGap := 10;
SheetPrinter.DifferentEvenPageGap := True;
// Получаем параметры страницы
PageSettings := SheetPrinter.PageSettings;
// Указываем, что печатаем таблицу с оформлением
PageSettings.BlackAndWhite := False;
// Указываем, что используем формат A4
PageSettings.PaperFormat := GxPaperFormat.A4;
// Выравниваем таблицу по горизонтали
PageSettings.CenterHorizontal := True;
// Выводим таблицу на печать
pCount := SheetPrinter.GetPageCount;
If pCount > 0 Then
Image := GxBitmap.CreateNew(1000, 1000, GxPixelFormat.Format64bppArgb);
Graph := GxGraphicsClass.FromImage(Image);
Rect := New GxRect.Create(0, 1, 1000, 1000);
Color := New GxColor.CreateRGB(255, 255, 255);
Graph.FillColorRectangle(Color, Rect);
SheetPrinter.PrintPage(1, Graph);
Printer := GxPrinters.DefaultPrinter As IGxDocumentPrinter;
Printer.StartDocument("Table");
Printer.NewPage;
Printer.Graphics.DrawImageTransparent(Image, Null, Null, Null);
Printer.EndDocument;
End If;
End Sub TablePrint;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Report;
Imports Prognoz.Platform.Interop.Tab;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
Report: IPrxReport;
Table: ITabSheet;
SheetPrinter: ITabSheetPrinter;
PageSettings: ITabPageSettings;
pCount: Integer;
Image: GxImage;
Graph: GxGraphics;
Rect: GxRectClass;
Color: GxColorClass_2;
Printer: IGxDocumentPrinter;
Bitmap: GxBitmapClassClass;
GraphicsClass: GxGraphicsClassClass;
Printers: GxPrintersClassClass;
Begin
// Получаем текущий репозиторий
mb := Params.Metabase;
// Получаем регламентный отчет
Report := mb.ItemById["REPORT_TAB"].Edit() As IPrxReport;
// Получаем таблицу
Table := (Report.ActiveSheet As IPrxTable).TabSheet;
// Получаем параметры печати
SheetPrinter := Table.CreatePrinter();
// Задаем отступы для первой страницы
SheetPrinter.FirstPageHeaderGap := 20;
SheetPrinter.FirstPageFooterGap := 20;
SheetPrinter.DifferentFirstPageGap := True;
// Задаем отступы для четных страниц
SheetPrinter.EvenHeaderGap := 10;
SheetPrinter.EvenFooterGap := 10;
SheetPrinter.DifferentEvenPageGap := True;
// Получаем параметры страницы
PageSettings := SheetPrinter.PageSettings;
// Указываем, что печатаем таблицу с оформлением
PageSettings.BlackAndWhite := False;
// Указываем, что используем формат A4
PageSettings.PaperFormat := GxPaperFormat.pfA4;
// Выравниваем таблицу по горизонтали
PageSettings.CenterHorizontal := True;
// Выводим таблицу на печать
pCount := SheetPrinter.GetPageCount();
If pCount > 0 Then
Bitmap := New GxBitmapClassClass.Create();
Image := Bitmap.CreateNew(1000, 1000, GxPixelFormat.pifFormat64bppArgb);
GraphicsClass := New GxGraphicsClassClass.Create();
Graph := GraphicsClass.FromImage(Image);
Rect := New GxRectClass.Create();
Rect.Create(0, 1, 1000, 1000);
Color := New GxColorClass_2.Create();
Color.CreateRGB(255, 255, 255);
Graph.FillColorRectangle(Color, Rect);
SheetPrinter.PrintPage(1, Graph);
Printers := New GxPrintersClassClass.Create();
Printer := Printers.DefaultPrinter As IGxDocumentPrinter;
Printer.StartDocument("Table");
Printer.NewPage();
Printer.Graphics.DrawImageTransparent(Image, Null, Null, Null);
Printer.EndDocument();
End If;
End Sub;
См. также: