Public Shared Sub Get_List_Of_Device_And_Media()
' Для проверки общего времени выполнения создаём параметр времени начала выполнения
Dim t1 As DateTime = Now()
' Сюда буду писать все сообщения
Dim Text As New List(Of String)
' Текущий документ
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
' Параметры для вывода сообщений: имя устройства, формат
Dim devname As String = "", medname As String = ""
' Параметр проверки настройки печати
Dim psv As PlotSettingsValidator = PlotSettingsValidator.Current
' Получаем список устройств печати
Dim devlist As Specialized.StringCollection = psv.GetPlotDeviceList()
' Сначала выведем весь список принтеров
For i As Integer = 0 To devlist.Count - 1
Text.Add(i + 1 & " " & devlist(i))
Next
' Создаём настройки печати
Using ps As New PlotSettings(True)
' Перебираем все принтеры
For i As Integer = 0 To devlist.Count - 1
' Имя текущего принтера
devname = devlist(i)
' Выводим имя текущего принтера в сообщение
Text.Add("Текущий/Selected: " & devname)
' Настройка печати для текущего принтера
Dim plotConfig As PlotConfig = PlotConfigManager.SetCurrentConfig(devname)
' Устанавливаем текущий принтер
psv.SetPlotConfigurationName(ps, devname, Nothing)
' Обновление параметров настройки печати
psv.RefreshLists(ps)
' Получаем все форматы принтера в каноническом виде
Dim medlist As Specialized.StringCollection = psv.GetCanonicalMediaNameList(ps)
' Перебираем их
For j As Integer = 0 To medlist.Count - 1
' Выводим имя текущего формата принтера в сообщение
Text.Add("Формат/Media name " & j + 1 & " " & medlist(j))
' Получаем границы формата
Dim mb As MediaBounds = plotConfig.GetMediaBounds(medlist(j))
' Выводим размеры и поля формата в сообщение
Text.Add(Math.Round(mb.PageSize.X).ToString())
Text.Add(Math.Round(mb.PageSize.Y).ToString())
Text.Add(Math.Round(mb.LowerLeftPrintableArea.X).ToString())
Text.Add(Math.Round(mb.UpperRightPrintableArea.Y).ToString())
Text.Add(Math.Round(mb.UpperRightPrintableArea.X).ToString())
Text.Add(Math.Round(mb.LowerLeftPrintableArea.Y).ToString())
Next
Next
End Using
' Для проверки общего времени выполнения создаём параметр времени завершения выполнения
Dim t2 As DateTime = Now()
' Показываем время выполнения в секундах
MsgBox("Check delay: " & DateDiff(DateInterval.Second, t1, t2).ToString)
' Сохраняем сообщение в файл и открываем его
IO.
File.
WriteAllLines("D:\info.txt", Text
) Process.Start("D:\info.txt")
End Sub