从纵向更改为横向打印文档/打印预览



我一直在阅读大量关于PrintPreviewDialog,PrintPreviewControl和PrintDocument的文档。一切都说我必须将 Portrait/Lanscape 位放入 PrintDocument QueryPageSettings 事件中,然后 PrintPreviewDialog 将从 PrintDocument 获取设置。

我从:

    Private Sub PrintDocument1_QueryPageSettings(ByVal sender As Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) Handles PrintDocument1.QueryPageSettings
    Select Case mOrientation
        Case ePrinterOrientation.Landscape
            PrintDocument1.DefaultPageSettings.Landscape = True
        Case ePrinterOrientation.Portrait
            PrintDocument1.DefaultPageSettings.Landscape = False
    End Select
End Sub

这是我当前的代码

   Private Sub PrintDocument1_QueryPageSettings(ByVal sender As Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) Handles PrintDocument1.QueryPageSettings
    Select Case mOrientation
        Case ePrinterOrientation.Landscape
            Dim ps As New PaperSize("A4Landscape", 1169, 827)
            ps.PaperName = PaperKind.A4
            PrintDocument1.DefaultPageSettings.PaperSize = ps
            PrintDocument1.DefaultPageSettings.Landscape = True
        Case ePrinterOrientation.Portrait
            Dim ps As New PaperSize("A4Portrait", 827, 1169)
            ps.PaperName = PaperKind.A4
            PrintDocument1.DefaultPageSettings.PaperSize = ps
            PrintDocument1.DefaultPageSettings.Landscape = False
    End Select
End Sub

我还尝试将此代码放入PrintDocument1_BeginPrint事件中,这确实更改了 PrintPreview 的"窗口",但 PrintDocument 的内容仍然保持纵向(使用的"视图"的宽度保持不变)。

纵向模式跨越

10 页的 2 列,横向模式应在 1 页上包含所有列,但事实并非如此,"可打印区域"边距实际上似乎完全相同,即使数字更改为正确的值如果我逐步完成调试。

我真的对这个感到困惑,这个 3 路依赖,它应该比这更简单。

编辑:

进一步解决这一问题。如果我打印文档,方向设置为横向,但打印边距(文档)仍然打印(溢出),就好像边距是纵向一样。

我真的需要解决这个问题。这是不可接受的。

而不是

PrintDocument1.DefaultPageSettings.Landscape = True

e.PageSettings.Landscape = True

您尝试做的是在PrintDoc1_QueryPageSettings内更改事件的值:

System.Drawing.Printing.QueryPageSettingsEventArgs
PaperSize("A4Landscape", 1169, 827)

应该是

PaperSize("A4Landscape", 827, 1169)

肖像也是如此。

最新更新