У меня есть приложение Winforms, которое внезапно начало неправильно отображать RDLC как на физических принтерах, так и на принтере в PDF. Он нацелен на .NET 4.5.2 и начал показывать это после обновления до 4.7.2 на прошлой неделе. Я также могу воспроизвести проблему на моей тестовой системе.
Примеры:
Правильно напечатано:
Неверно напечатано:
Я рендерим RDLC в MemoryStream и передаю его в PrintDocument.
Я изменил DPI PrintDocument и попробовал разные шрифты в RDLC
Любая помощь или точка в правильном направлении была бы отличной.
EDIT:
Private Sub Export()
Dim RL As PageLayout = CType(_RenderLayout, PageLayout)
Dim deviceInfo As String = RL.GetDeviceInfo
Dim warnings() As Warning = Nothing
_streams = New List(Of Stream)()
_report.Render("Image", deviceInfo, AddressOf CreateStream, warnings)
Dim exportStream As Stream
For Each exportStream In _streams
exportStream.Position = 0
Next
End Sub
Private Function CreateStream(ByVal name As String, ByVal fileNameExtension As String, ByVal encoding As Encoding,
ByVal mimeType As String, ByVal willSeek As Boolean) As Stream
Dim stream As Stream = New MemoryStream
_streams.Add(stream)
_streamCount += 1
Return stream
End Function
Private Sub PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
Dim pageImage As New Metafile(_streams(_currentPageIndex))
ev.Graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
ev.Graphics.DrawImage(pageImage, ev.PageBounds)
_currentPageIndex += 1
ev.HasMorePages = (_currentPageIndex < _streams.Count)
End Sub