Ответ 1
У меня должно быть решение Может быть использовано для вас.............
Сначала я создал новый PrintDocument и подключил некоторые обработчики для своего события PrintPage.
mobjPrintDocument = New PrintDocument
RemoveHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
AddHandler mobjPrintDocument.PrintPage, AddressOf Print_Report
Затем мы можем вызвать функцию PrintBitmap в PrintDocument, когда вы хотите распечатать. Здесь я делаю это, когда пользователь нажимает кнопку "Печать".
Private Sub xbtnPrint_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
mintPageIndex = 0
mobjPrintDocument.PrintBitmap(FileName)
End Sub
Теперь важная часть. Мы можем захватить контент, предназначенный для подключения к событию PrintPage (как описано выше). Я могу настроить e.PageVisual на любой визуальный элемент xaml, и PrintBitmap обработает его. Здесь я использую функцию GetPages и прокручиваю ее, чтобы убедиться, что я печатаю каждую страницу (элемент pdfviewer). Однако вы можете указать его на любой визуальный элемент, как я уже сказал.
Private Sub Print_Report(sender As System.Object, e As PrintPageEventArgs)
e.PageVisual = xobjReportViewer.GetPages(mintPageIndex)
mintPageIndex += 1
e.HasMorePages = mintPageIndex < xobjReportViewer.GetPages.Count
End Sub
Элементы e.HasMorePages позволяют принудительно запускать это событие, пока вы не закончите.
Надеюсь, это кому-то поможет. Благодаря поддержке принтеров Silverlight 5 и Post- Script многие принтеры с эмулятором PostScript могут быть несовместимы, но также не будут по умолчанию печатать растровые изображения. Это обходное решение устраняет это, делая печать немного более стабильной в приложении типа LOB.