Dim deviceInfo As String = "<DeviceInfo><OutputFormat>EMF</OutputFormat>" & _ "<PageWidth>" & (pageSettings.PaperSize.Height) * 3000 & "in</PageWidth>" & _ "<PageHeight>" & (pageSettings.PaperSize.Height) * 3000 & "in</PageHeight>" & _ "<MarginTop>" & (pageSettings.Margins.Top) * 3000 & "in</MarginTop>" & _ "<MarginLeft>" & (pageSettings.Margins.Left) * 3000 & "in</MarginLeft>" & _ "<MarginRight>" & (pageSettings.Margins.Right) * 3000 & "in</MarginRight>" & _ "<MarginBottom>" & (pageSettings.Margins.Bottom) * 3000 & "in</MarginBottom>" & _ "</DeviceInfo>" Dim warnings() As Warning Dim streams = New List(Of Stream)() Dim currentPageIndex = 0 report.Render("Image", deviceInfo, Function(name, fileNameExtension, encoding, mimeType, willSeek) Dim stream = New MemoryStream() streams.Add(stream) Return stream End Function, warnings) For Each stream As Stream In streams stream.Position = 0 Next If streams Is Nothing OrElse streams.Count = 0 Then Throw New Exception("Error: no stream to print.") End If Dim printDocument = New PrintDocument() printDocument.DefaultPageSettings = pageSettings printDocument.PrinterSettings.PrinterName = gblPOSReceiptPrinter If Not printDocument.PrinterSettings.IsValid Then Throw New Exception("Error: cannot find the default printer.") Else AddHandler printDocument.PrintPage, Sub(sender, e) Dim pageImage As Metafile = New Metafile(streams(currentPageIndex)) Dim adjustedRect As Rectangle = New Rectangle( e.PageBounds.Left - CInt(e.PageSettings.HardMarginX), e.PageBounds.Top - CInt(e.PageSettings.HardMarginY), e.PageBounds.Width, e.PageBounds.Height) e.Graphics.FillRectangle(Brushes.White, adjustedRect) e.Graphics.DrawImage(pageImage, adjustedRect) currentPageIndex += 1 e.HasMorePages = (currentPageIndex < streams.Count) e.Graphics.DrawRectangle(Pens.Red, adjustedRect) End Sub AddHandler printDocument.EndPrint, Sub(Sender, e) If streams IsNot Nothing Then For Each stream As Stream In streams stream.Close() Next streams = Nothing End If End Sub printDocument.Print() End If
Dim deviceInfo As String = "<DeviceInfo><OutputFormat>EMF</OutputFormat>" & _ "<PageWidth>" & (pageSettings.PaperSize.Height) * 3000 & "in</PageWidth>" & _ "<PageHeight>" & (pageSettings.PaperSize.Height) * 3000 & "in</PageHeight>" & _ "<MarginTop>" & (pageSettings.Margins.Top) * 3000 & "in</MarginTop>" & _ "<MarginLeft>" & (pageSettings.Margins.Left) * 3000 & "in</MarginLeft>" & _ "<MarginRight>" & (pageSettings.Margins.Right) * 3000 & "in</MarginRight>" & _ "<MarginBottom>" & (pageSettings.Margins.Bottom) * 3000 & "in</MarginBottom>" & _ "</DeviceInfo>"
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)