C#
using DotNetBrowser; using DotNetBrowser.Events; using DotNetBrowser.WPF; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; namespace PrintToPDFSample { class MyPDFPrintHandler : PrintHandler { Func<PrintSettings, PrintSettings> func; public MyPDFPrintHandler(Func<PrintSettings, PrintSettings> func) { this.func = func; } public PrintStatus OnPrint(PrintJob printJob) { PrintSettings printSettings = func(printJob.PrintSettings); printSettings.PrintToPDF = true; printSettings.Landscape = true; printSettings.PrintBackgrounds = true; printSettings.PageMargins = new PageMargins(20, 40, 40, 20); return PrintStatus.CONTINUE; } } public class WindowMain : Window { private Button printButton; private WPFBrowserView browserView; private Grid layout; public WindowMain() { layout = new Grid(); ColumnDefinition gridCol1 = new ColumnDefinition(); layout.ColumnDefinitions.Add(gridCol1); RowDefinition gridRow1 = new RowDefinition(); gridRow1.Height = new GridLength(45); RowDefinition gridRow2 = new RowDefinition(); layout.RowDefinitions.Add(gridRow1); layout.RowDefinitions.Add(gridRow2); Content = layout; printButton = new Button(); printButton.Content = "Print PDF"; printButton.Height = 23; printButton.Click += printButton_Click; Grid.SetRow(printButton, 0); Grid.SetColumn(printButton, 0); browserView = new WPFBrowserView(BrowserFactory.Create()); Grid.SetRow(browserView, 1); Grid.SetColumn(browserView, 0); layout.Children.Add(printButton); layout.Children.Add(browserView); Width = 1024; Height = 768; this.Loaded += WindowMain_Loaded; } void WindowMain_Loaded(object sender, RoutedEventArgs e) { browserView.Browser.LoadURL("http://www.teamdev.com/services"); } void printButton_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "document"; dlg.DefaultExt = ".pdf"; dlg.Filter = "PDF documents (.pdf)|*.pdf"; dlg.Title = "Save page as PDF document"; var res = dlg.ShowDialog(); if (res.HasValue && res.Value) { browserView.Browser.PrintHandler = new MyPDFPrintHandler((printSettings) => { printSettings.PDFFilePath = dlg.FileName; return printSettings; }); browserView.Browser.Print(); } } [STAThread] public static void Main() { Application app = new Application(); WindowMain wnd = new WindowMain(); app.Run(wnd); var browser = wnd.browserView.Browser; wnd.browserView.Dispose(); browser.Dispose(); } } }
VB.NET
Imports DotNetBrowser Imports DotNetBrowser.WPF Imports System.Windows Imports System.Windows.Controls Module PrintToPDFSample Class MyPDFPrintHandler Implements PrintHandler Private func As Func(Of PrintSettings, PrintSettings) Public Sub New(ByVal func As Func(Of PrintSettings, PrintSettings)) Me.func = func End Sub Public Function OnPrint(ByVal printJob As PrintJob) As PrintStatus _ Implements PrintHandler.OnPrint Dim printSettings As PrintSettings = func(printJob.PrintSettings) printSettings.PrintToPDF = True printSettings.Landscape = True printSettings.PrintBackgrounds = True printSettings.PageMargins = New PageMargins(20, 40, 40, 20) Return PrintStatus.CONTINUE End Function End Class Public Class WindowMain Inherits Window Private printButton As Button Private browserView As WPFBrowserView Private layout As Grid Public Sub New() layout = New Grid() Dim gridCol1 As ColumnDefinition = New ColumnDefinition() layout.ColumnDefinitions.Add(gridCol1) Dim gridRow1 As RowDefinition = New RowDefinition() gridRow1.Height = New GridLength(45) Dim gridRow2 As RowDefinition = New RowDefinition() layout.RowDefinitions.Add(gridRow1) layout.RowDefinitions.Add(gridRow2) Content = layout printButton = New Button() printButton.Content = "Print PDF" printButton.Height = 23 AddHandler printButton.Click, AddressOf printButton_Click Grid.SetRow(printButton, 0) Grid.SetColumn(printButton, 0) browserView = New WPFBrowserView(BrowserFactory.Create()) Grid.SetRow(browserView, 1) Grid.SetColumn(browserView, 0) layout.Children.Add(printButton) layout.Children.Add(browserView) Width = 1024 Height = 768 AddHandler Me.Loaded, AddressOf WindowMain_Loaded End Sub Private Sub WindowMain_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) browserView.Browser.LoadURL("http://www.teamdev.com/services") End Sub Private Sub printButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) Dim dlg As Microsoft.Win32.SaveFileDialog = New Microsoft.Win32.SaveFileDialog() dlg.FileName = "document" dlg.DefaultExt = ".pdf" dlg.Filter = "PDF documents (.pdf)|*.pdf" dlg.Title = "Save page as PDF document" Dim res = dlg.ShowDialog() If res.HasValue AndAlso res.Value Then browserView.Browser.PrintHandler = New MyPDFPrintHandler(Function(printSettings) printSettings.PDFFilePath = dlg.FileName Return printSettings End Function) browserView.Browser.Print() End If End Sub <STAThread> Public Shared Sub Main() Dim app As Application = New Application() Dim wnd As WindowMain = New WindowMain() app.Run(wnd) Dim browser = wnd.browserView.Browser wnd.browserView.Dispose() browser.Dispose() End Sub End Class End Module