Объект представляет набор данных для задания настроек печати карты. Используется как параметр метода PrintOut элемента MapCtrl.
Входит в состав ZuluGIS 2021 Library.
PROGID:
ZuluLib.PrintInfo
CLSID:
{1250709C-0B01-11D2-B55D-444553540000}
Align
тип: Long
Задает положение печатаемого фрагмента на листе. Для задания можно использовать константы из набора eLabelPosition. Соответствует органу "Положение" в панели настройки печати карты.
По умолчанию имеет значение -1.
Copies
тип: Long
Задает число копий.
Device
тип: String
Задает имя устройства печати, например "HP DeskJet 670C". Вместе со свойствами Driver и Port определяет устройство печати, которое используется для вывода. См. рубрику Описание.
Driver
тип: String
Задает драйвер устройства печати, обычно "WINSPOOL". Может быть пропущен, тогда вместо имени драйвера будет использоваться "WINSPOOL". Вместе со свойствами Device и Port определяет устройство печати, которое используется для вывода. См. рубрику Описание.
hDC
тип: Long
Задает дескриптор устройства (HDC).
hDevMode
тип: Long
Задает дескриптор (HGLOBAL) структуры DEVMODE.
hDevNames
тип: Long
Задает дескриптор (HGLOBAL) структуры DEVNAMES.
HorzPages
тип: Long
Задает число страниц по горизонтали в которые нужно вписать печатаемую область. Используется в том случае, если указан флаг ePrintFitToPage в свойстве Options.
Layer
тип: Variant
Задает слой по габаритам которого определяется печатаемый фрагмент карты. Используется в том случае, если указан флаг ePrintLayerExtents в свойстве Options. В качестве значения могут использоваться либо целое число - порядковый номер слоя в коллекции Layers, либо строка - имя слоя, либо ссылка на объект Layer.
MapScale
тип: Double
Options
тип: Long
Набор флагов, задающий опции печати. Для задания может использоваться комбинация значений из набора ePrintInfoConstants.
Orientation
тип: Long
Задает ориентацию бумаги. Может принимать значения ePrintOrientPortrait и ePrintOrientLandscape. Если указан 0, то ориентация не задана явно.
OutputFile
тип: String
Зарезервировано
PaperBin
тип: Long
Задает источник бумаги (лоток, способ подачи бумаги и т.п.).
PaperLength
тип: Long
Задает длину листа бумаги в десятых долях миллиметра. Это свойство обрабатывается только, если свойству PaperSize присвоен 0, иначе значение свойства игнорируется.
PaperSize
тип: Long
Задает формат бумаги. Может принимать значение 0, означающее, что размеры бумаги задаются явно свойствами PaperLength и PaperWidth, либо положительное число, означающее номер формата бумага. Для задания свойства могут быть использованы константы DMPAPER_xxxx из Win32 API. В Visual Basic им соответствуют константы vbPRPSxxxx из множества PrinterObjectConstants.
PaperWidth
тип: Long
Задает ширину листа бумаги в десятых долях миллиметра. Это свойство обрабатывается только, если свойству PaperSize присвоен 0, иначе значение свойства игнорируется.
Port
тип: String
Задает имя порта, к которому подключено устройство печати, например "LPT1:". Вместе со свойствами Device и Driverопределяет устройство печати, которое используется для вывода. См. рубрику Описание.
Scale
тип: Double
Физический масштаб карты, например величина 2000 означает печать в масштабе 1:2000.
VertPages
тип: Long
Задает число страниц по вертикали в которые нужно вписать печатаемую область. Используется в том случае, если указан флаг ePrintFitToPage в свойстве Options.
GetAreaRect
SetAreaRect - устарел, применим только к план-схеме
SetAreaRectangle - задание области печати
Объект PrintInfo служит для задания или переопределения параметров печати карты или настроек принтера. Для определения параметров печати и принтера используются следующие данные:
Настройки принтера по умолчанию
Настройки печати, записанные в карте (формат бумаги, ориентация и параметры печати карты)
Настройки, заданные свойствами объекта PrintInfo
В указанном списке каждый последующий набор настроек может перекрывать предыдущие настройки, т.е. например формат бумаги, заданный по умолчанию в Панели Управления, может быть переопределен в параметрах документа карты, а тот в свою очередь переопределен свойством PaperSize объекта PrintInfo.
Свойства и методы объекта PrintInfo делятся на две группы: одни задают настройки печати карты, другие - параметры принтера. При этом следует задавать не все свойства объекта, а только те, которые по усмотрению разработчика требуют переопределения.
Настройка печати карты:
Align, HorzPages, Layer, Options, Scale, SetAreaRect, VertPages
Настройки принтера:
Copies, Device, Driver, hDC, hDevMode, hDevNames, Options, Orientation, OutputFile, PaperBin, PaperLength, PaperSize, PaperWidth, Port
Объект PrintInfo приспособлен для того, чтобы использовать имеющиеся в приложении данные о настройках принтера для печати карты. При этом можно избежать открытия панели выбора принтера, появление которой может оказаться нежелательно. Данные о принтере могут быть либо получены через функцию Win32 API PrintDlg, либо храниться централизовано, как например в Delphi (объект типа TPrinter) или в Visual Basic (объект Printer).
Для использования имеющихся в приложении данных о принтере возможны следующие варианты:
Явно указать дескриптор контекста устройства (HDC), заполнив свойство hDC.
Задать свойства hDevNames и hDevMode. Эти данные могут быть получены через функцию Win32 API PrintDlg.
Задать свойства Device, Driver, Port, hDevMode. Эти данные могут быть получены в Delphi и C++Builder через метод GetPrinter объекта TPrinter.
Задать свойства Device, Driver, Port, PaperSize (PaperWidth, PaperLength), PaperBin, Orientation, Copies. Эти данные могут быть получены в Visual Basic через одноименные свойства объекта Printer.
В любом случае, заданы ли точные настройки принтера или нет, для того, чтобы предотвратить появление панели выбора принтера, в свойстве Options следует указать флаг ePrintNoPrintDlg.
'Visual Basic: Dim obj As ZuluLib.PrintInfo Set obj = New ZuluLib.PrintInfo//Delphi: obj: IPrintInfo; obj := CoPrintInfo.Create;
'VBScript: Set obj = CreateObject("ZuluLib.PrintInfo")
Dim P As PrintInfo Set P = New PrintInfo 'Печать всей карты на одной странице минуя панель выбора принтера P.Options = ePrintMapExtents + ePrintDrawFrame + _ePrintFitToPage + ePrintNoPrintDlg MapCtrl1.PrintOut P