PrintInfo Object

Объект представляет набор данных для задания настроек печати карты. Используется как параметр метода 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