0
A
回答
1
答案是NO,你不能除非你寫自己的解決方案。報告查看器控件不支持這一點。您的選擇是創建自定義打印解決方案,或者操作RDLC文件以手動修改設置。
如果決定即時修改RDLC文件,需要將RDLC文件加載到內存中,修改XML文件以指定新的頁面設置,然後在報告查看器中重新加載RDLC文件。
如果您決定做手工印刷,這裏是一些VB.NET代碼,以幫助您入門:
Dim m_pageSettings As PageSettings 'Stores page settings for printout
Dim m_currentPage As Integer 'Used for index of pages
Private m_pages As New List(Of Stream)() 'Stores a stream for each pages
'Event fires when printDocument starts printing - reset page index to zero
Private Sub PrintDocument1_BeginPrint(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint
m_currentPage = 0
End Sub
'Function that prints all the pages included in the report
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim pageToPrint As Stream = m_pages(m_currentPage)
pageToPrint.Position = 0
Dim pageMetaFile As Metafile = New Metafile(pageToPrint) 'create an image(metafile) of the report page
Using (pageMetaFile)
'Create a rectangle the size of our report - include margins
' Dim adjustedRect As Rectangle = New Rectangle(_
' e.PageBounds.Left - CType(e.PageSettings.HardMarginX, Integer), _
' e.PageBounds.Top - CType(e.PageSettings.HardMarginY, Integer), _
' e.PageBounds.Width, _
' e.PageBounds.Height)
Dim adjustedRect As Rectangle = New Rectangle(_
e.PageBounds.Left, _
e.PageBounds.Top, _
e.PageBounds.Width, _
e.PageBounds.Height)
e.Graphics.FillRectangle(Brushes.White, adjustedRect) 'Fill rectangle with WHITE background
e.Graphics.DrawImage(pageMetaFile, adjustedRect) 'Draw report in rectangle - this will be printed
m_currentPage = m_currentPage + 1
e.HasMorePages = m_currentPage < m_pages.Count 'If more pages are left - keep processing
End Using
End Sub
'Event fires when PrintDocument queries for PageSettings. Return a copy of m_pagesettings.
Private Sub PrintDocument1_QueryPageSettings(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) Handles PrintDocument1.QueryPageSettings
e.PageSettings = CType(m_pageSettings.Clone, PageSettings)
End Sub
'Render the report in a EMF - This function creates metafiles(images) of each page in the report
Private Sub RenderAllLocalReportPages(ByVal localReport As LocalReport)
Dim deviceInfo As String = CreateEMFDeviceInfo() 'Enhanced MetaFile
Dim warnings As Warning() = Nothing
m_pages.Clear()
localReport.Render("IMAGE", deviceInfo, AddressOf LocalReportCreateStreamCallback, warnings)
End Sub
'Callback function used with RenderAllLocalReportPages
Private Function LocalReportCreateStreamCallback(ByVal name As String, ByVal extension As String, ByVal encoding As Encoding, ByVal mimeType As String, ByVal willSeek As Boolean) As Stream
Dim stream As New MemoryStream()
m_pages.Add(stream)
Return stream
End Function
Private Function CreateEMFDeviceInfo() As String
Dim paperSize As PaperSize = m_pageSettings.PaperSize
Dim margins As Margins = m_pageSettings.Margins
'The device info string defines the page range to print as well as the size of the page.
'A start and end page of 0 means generate all pages.
Return String.Format(CultureInfo.InvariantCulture, "<DeviceInfo><OutputFormat>emf</OutputFormat><StartPage>0</StartPage><EndPage>0</EndPage><MarginTop>{0}</MarginTop><MarginLeft>{1}</MarginLeft><MarginRight>{2}</MarginRight><MarginBottom>{3}</MarginBottom><PageHeight>{4}</PageHeight><PageWidth>{5}</PageWidth></DeviceInfo>", ToInches(margins.Top), ToInches(margins.Left), ToInches(margins.Right), ToInches(margins.Bottom), ToInches(paperSize.Height), ToInches(paperSize.Width))
End Function
'Convert report printing size to inches
Private Shared Function ToInches(ByVal hundrethsOfInch As Integer) As String
Dim inches As Double = hundrethsOfInch/100.0R
Return inches.ToString(CultureInfo.InvariantCulture) & "in"
End Function
希望這有助於。
相關問題
- 1. 更改打印機設置
- 2. 更改vb.net中的打印機設置
- 3. 打印報告時設置可見性
- 4. 如何在qweb報告中打印時間時更改時區?
- 5. POS打印機的Flex報告打印
- 6. 在android上運行並打印報告
- 7. 在vfp報告中更改頁面之前的打印行
- 8. 直接向打印機打印報告
- 9. 在c#中打印報告時更改了日期格式
- 10. 更改打印報告背景
- 11. Birt報告行式打印機支持
- 12. Jasper報告字體在點陣打印機打印時重疊
- 13. 更改水晶報表打印圖像運行時的大小
- 14. 如何爲報告設置特定的打印機?
- 15. 運行時設計報告
- 16. 如何在打印時設置打印機設置PDF
- 17. 修改報告中的打印數據
- 18. 條碼打印條碼打印機頁面設置水晶報告
- 19. 打印報告
- 20. 打印報告時出錯
- 21. 將默認打印機設置爲更改名稱的打印機
- 22. 通過命令行更改打印機設置
- 23. Microsoft Interop.Word - 更改紙張尺寸時忽略打印機設置
- 24. 在打印之前在Microsoft Access報告中運行VBA
- 25. 如何在jasper報告中設置打印excel文件
- 26. 如何在多臺打印機上打印水晶報告?
- 27. 調用報告後在遠程打印機上打印
- 28. SSRS報告打印在小型打印機上被壓扁
- 29. 在運行時更改CoreNLP設置
- 30. django:在運行時更改設置
thanx對此可能會有所幫助 – 2009-09-02 17:06:28