Как напечатать лист на выбранный PDF принтер?

Автор Тема: Как напечатать лист на выбранный PDF принтер?  (Прочитано 5287 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Всем, добрый день!

Пытаюсь выполнить печать листов на установленный в систему «PDFCreator» принтер.

Подскажите ссылку на пример или хотя бы способ. Параметры принтера собирать умею, а вот указывать принтеру его настройки не удалось пока.

Пока дошел до сбора информации:
Код - vb.net [Выбрать]
  1.     Public Sub Set_Printer_Parameters()
  2.         ' Проверка наличия принтера PDF
  3.         Dim App As Autodesk.Revit.UI.UIApplication = Me.ExComData.Application
  4.         Dim UIDoc As UIDocument = App.ActiveUIDocument
  5.         Dim Doc As Document = App.ActiveUIDocument.Document
  6.  
  7.         Dim tr As New Transaction(Doc, "Set PDF printer parameters")
  8.         tr.Start()
  9.  
  10.         Dim myPS As PrintSetup = Doc.PrintManager.PrintSetup
  11.         Dim myIPS As IPrintSetting = myPS.CurrentPrintSetting
  12.         Dim myPP As PrintParameters = myIPS.PrintParameters
  13.         Dim myPSize As PaperSize = myPP.PaperSize
  14.         Dim myPSource As PaperSource = myPP.PaperSource
  15.  
  16.         myPP.ColorDepth = ColorDepthType.Color
  17.         myPP.HiddenLineViews = HiddenLineViewsType.VectorProcessing
  18.         myPP.HideCropBoundaries = True
  19.         myPP.HideReforWorkPlanes = True
  20.         myPP.HideScopeBoxes = True
  21.         myPP.HideUnreferencedViewTags = False
  22.         myPP.MarginType = MarginType.NoMargin
  23.         myPP.PageOrientation = PageOrientationType.Portrait
  24.         myPP.PaperPlacement = PaperPlacementType.Center
  25.  
  26.         myPP.UserDefinedMarginX = 0
  27.         myPP.UserDefinedMarginY = 0
  28.  
  29.  
  30.         '••••••••••••••••••••••••••••••••••••••••••
  31.         'Здесь должно быть что-то еще
  32.         '••••••••••••••••••••••••••••••••••••••••••
  33.  
  34.         'Doc.Print()
  35.  
  36.         tr.Commit()
  37.         tr.Dispose()
  38.     End Sub
  39.  


Я так понимаю, что нужно создать свою настройку принтера, но сразу возникает вопрос, а принтер эту настройку выполнит? Ведь он же сторонний.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Вроде уже на печать выводится, но не могу задать конкретно длину и ширину, чтобы печать была без полей!
Какие параметры нужно выставить, чтобы печать была идеальной?
« Последнее редактирование: 25-02-2016, 10:39:28 от Пашин Евгений »

Отмечено как Решение Пашин Евгений 25-02-2016, 07:11:32

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Решение пока лишь в таком состоянии:
Код - vb.net [Выбрать]
  1.     Public Sub Set_Printer_Parameters()
  2.         ' Проверка наличия принтера PDF
  3.         Dim App As Autodesk.Revit.UI.UIApplication = Me.ExComData.Application
  4.         Dim UIDoc As UIDocument = App.ActiveUIDocument
  5.         Dim Doc As Document = App.ActiveUIDocument.Document
  6.  
  7.         Dim tr As New Transaction(Doc, "Set PDF printer parameters")
  8.         tr.Start()
  9.  
  10.         Dim myPM As PrintManager = Doc.PrintManager
  11.         myPM.PrintRange = PrintRange.Current
  12.         myPM.Apply()
  13.  
  14.         myPM.SelectNewPrintDriver("PDFCreator")
  15.         myPM.Apply()
  16.  
  17.         If myPM.IsVirtual = VirtualPrinterType.AdobePDF Then
  18.             'myPM.CombinedFile = False
  19.             myPM.PrintToFile = True
  20.             myPM.Apply()
  21.         Else
  22.             tr.Commit()
  23.             tr.Dispose()
  24.             Exit Sub
  25.         End If
  26.  
  27.         Dim curPDFFN As String = Format(Now(), "HHmmssddMMyyyy")
  28.  
  29.         myPM.PrintToFileName = "C:\Users\Pashin.Evgeniy\Desktop\pdf_" & curPDFFN & ".pdf"
  30.         myPM.Apply()
  31.  
  32.         Dim myPS As PrintSetup = myPM.PrintSetup
  33.  
  34.         Dim myIPS As IPrintSetting = myPS.CurrentPrintSetting
  35.         myIPS.PrintParameters.ColorDepth = ColorDepthType.GrayScale
  36.         myIPS.PrintParameters.HiddenLineViews = HiddenLineViewsType.VectorProcessing
  37.         myIPS.PrintParameters.HideCropBoundaries = True
  38.         myIPS.PrintParameters.HideReforWorkPlanes = True
  39.         myIPS.PrintParameters.HideScopeBoxes = True
  40.         myIPS.PrintParameters.HideUnreferencedViewTags = False
  41.         myIPS.PrintParameters.PaperPlacement = PaperPlacementType.Margins
  42.         myIPS.PrintParameters.MarginType = MarginType.UserDefined
  43.         myIPS.PrintParameters.UserDefinedMarginX = 0
  44.         myIPS.PrintParameters.UserDefinedMarginY = 0
  45.         myIPS.PrintParameters.RasterQuality = RasterQualityType.High
  46.         myIPS.PrintParameters.ZoomType = ZoomType.FitToPage
  47.  
  48.         myIPS.PrintParameters.PageOrientation = PageOrientationType.Portrait
  49.  
  50.         Dim myPSize As PaperSizeSet = myPM.PaperSizes
  51.         For Each myPSP As PaperSize In myPSize
  52.             If myPSP.Name = "A4x3_Gallurgy" Then
  53.                 myIPS.PrintParameters.PaperSize = myPSP
  54.             End If
  55.         Next
  56.  
  57.         myPS.SaveAs("Setting " & curPDFFN)
  58.         myPM.Apply()
  59.  
  60.         Dim myPMPS As FilteredElementCollector = New FilteredElementCollector(Doc).OfClass(GetType(Autodesk.Revit.DB.PrintSetting))
  61.  
  62.         For Each PS As PrintSetting In myPMPS
  63.             If PS.Name = "Setting " & curPDFFN Then
  64.                 Doc.PrintManager.PrintSetup.CurrentPrintSetting = PS
  65.             End If
  66.         Next
  67.         tr.Commit()
  68.         tr.Dispose()
  69.  
  70.         myPM.SubmitPrint()
  71.         myPM.Apply()
  72.     End Sub
  73.  

Извините, вам запрещён просмотр содержимого спойлеров.
« Последнее редактирование: 25-02-2016, 10:28:49 от Пашин Евгений »