【问题标题】:Setting the paper size设置纸张尺寸
【发布时间】:2010-10-15 15:34:53
【问题描述】:

请帮助我了解如何在 c# 代码中设置纸张大小。我正在使用 API printDocument。

下面是我的代码:

 ppvw = new PrintPreviewDialog();
 ppvw.Document = printDoc;
 ppvw.PrintPreviewControl.StartPage = 0;
 ppvw.PrintPreviewControl.Zoom = 1.0;
 ppvw.PrintPreviewControl.Columns = 10;


 // Showing the Print Preview Page
 printDoc.BeginPrint += new System.Drawing.Printing.PrintEventHandler(PrintDoc_BeginPrint);
 printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);


 if (ppvw.ShowDialog() != DialogResult.OK)
 {
     printDoc.BeginPrint -= new System.Drawing.Printing.PrintEventHandler(PrintDoc_BeginPrint);
     printDoc.PrintPage -= new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
 }


 printDoc.PrinterSettings.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("a2", 5.0,5.0);
 printDoc.Print();

【问题讨论】:

  • 你遇到了什么错误?

标签: c# .net printing


【解决方案1】:

试试这个。我认为这段代码将帮助您解决这个问题。

Private Sub bt_Save_Click(sender As Object, e As EventArgs) Handles bt_Save.Click
    MsgBox("Saved", MsgBoxStyle.Information)
    If MsgBox("you want to print now?", MsgBoxStyle.Question + vbOKCancel, "Printing") = MsgBoxResult.Ok Then
        Try
            PrintPreviewDialog1.Document = ImportBillPrintDocument
            ImportBillPrintDocument.PrinterSettings.DefaultPageSettings.PaperSize = pkCustomSize1
            ImportBillPrintDocument.DefaultPageSettings.PaperSize = pkCustomSize1

            PrintPreviewDialog1.WindowState = FormWindowState.Maximized
            PrintPreviewDialog1.ShowDialog()
        Catch ex As Exception

        End Try

    End If
End Sub

【讨论】:

  • 如果您不记录 pkCustomSize1 值是什么,它如何解决问题?切勿使用空的 Try-Catch。问题在 c# 中。
  • Dim pkCustomSize1 As New PaperSize("Custom", 810, HeightVar)我不会写c#,只写vb.net。
  • 如果您不使用Try-Catch,此代码将无法正常工作。
  • 我没有说不要使用 Try-Catch ——“空”是重要的词。
  • 好的,我只使用带有空的try-catch,因为我不希望程序在那个时候显示错误异常,但现在我插入msgbox() 以显示用户时创建的错误代码是什么用于轻松找到错误位置。但是如果你想得到一个异常可以插入msgbox(ex.tostring)
【解决方案2】:
PrinterSettings ps = new PrinterSettings();
PrintDocument recordDoc = new PrintDocument();
recordDoc.PrinterSettings = ps;

这是一种设置纸张大小的方法,例如“A4”

IEnumerable<PaperSize> paperSizes = ps.PaperSizes.Cast<PaperSize>();
PaperSize sizeA4 = paperSizes.First<PaperSize>(size => size.Kind == PaperKind.A4); // setting paper size to A4 size
recordDoc.DefaultPageSettings.PaperSize = sizeA4;

这是另一种设置自定义纸张尺寸的方法

recordDoc.DefaultPageSettings.PaperSize = new PaperSize("210 x 297 mm", 800, 800);
PrintPreviewDialog ppvw = new PrintPreviewDialog();
ppvw .Document = recordDoc;
ppvw.ShowDialog();

希望它有效。

【讨论】:

【解决方案3】:

您可以按照以下方式使用,用户可以在设置表单中设置页面大小。

        private void button1_Click(object sender, EventArgs e)
        {
            PrintDialog printdg = new PrintDialog();
            if (printdg.ShowDialog() == DialogResult.OK)
            {
                PrintDocument pd = new PrintDocument();
                pd.PrinterSettings = printdg.PrinterSettings;
                pd.PrintPage += PrintPage;
                pd.Print();
                pd.Dispose();
            }
        }
        private void PrintPage(object o, PrintPageEventArgs e)
        {
           // Printng logic
        }

【讨论】:

    【解决方案4】:

    我正在使用 Visual Basic,通过此代码,我可以让表单在 printpreview 中显示所有内容,但仍会在右侧打印一个经过裁剪的页面。

    PrintForm1.Form = Me
    PrintForm1.PrinterSettings.DefaultPageSettings.Landscape = True
    PrintForm1.PrinterSettings.DefaultPageSettings.PaperSize = New Printing.PaperSize("Custom", Me.Height, (Me.Width + 47))
    PrintForm1.PrinterSettings.DefaultPageSettings.Margins = New Printing.Margins(3, 3, 3, 3)
    PrintForm1.PrinterSettings.DefaultPageSettings.PaperSize.RawKind = Printing.PaperKind.A4Small
    PrintForm1.PrintAction = Printing.PrintAction.PrintToPreview    'PrintForm1.PrintAction = Printing.PrintAction.PrintToPrinter
    PrintForm1.Print()  'PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.Scrollable)  '
    

    【讨论】:

      【解决方案5】:

      纸张大小的构造函数是 PaperSize(String, Int32, Int32)

      5.0 (5) X 5.0 (5) 太小了,,, 除非“自定义尺寸”是您的字符串.. 或者 A2 为 420 x 594...

      并尝试在printer.PaperSizes 中枚举foreach PaperSize 大小并检查A2 是否存在.. ..

      默认将 Rawkind 设置为自定义,您还需要按照http://msdn.microsoft.com/en-us/library/system.drawing.printing.papersize.rawkind.aspx 中所述设置 Rawkind

      【讨论】:

      • 感谢回复...但是如果我给 420X594 它只显示 A4 尺寸的纸张..请告诉我如何设置自定义尺寸
      猜你喜欢
      • 1970-01-01
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 2021-01-02
      • 1970-01-01
      • 2016-05-01
      • 2012-07-05
      相关资源
      最近更新 更多