title: Programmatically set Custom Paper Size for Crystal Report
body: <p>I have created custom paper Size "SUPP 15 x 14" in <code>Setting - Printers - File - Server Properties.</code> Now I’m trying to set custom Paper Size for Crystal Report using VB.net 2005.</p>
  
  <p>When I run report from VB.net, the Crystal report viewer shows the correct preview for custom paper size but when I give print command it prints with the default printer paper size. (e.g Letter)</p>
  
  <p>Here's the code I'm using to print:</p>
  
  <pre><code>Public Sub ...
      '...
      Dim ObjCrReport as new ReportDocument
      '...
      ObjCrReport.SetDataSource(ObjPrintDataSet.Tables("PrintData"))
      SetReportPageSize("SUPP 15 x 14", 1)
      '...
  End Sub
  
  Private Sub BtnPrintDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPrintDoc.Click
      Try
          'Print command
          ObjCrReport.PrintToPrinter(1, False, 0, 0)
      Catch ex As Exception
          MessageBox.Show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error)
      End Try
  End Sub
  
  Public Sub SetReportPageSize(ByVal mPaperSize As String, ByVal PaperOrientation As Integer)
      Try
          Dim ObjPrinterSetting As New System.Drawing.Printing.PrinterSettings
          Dim PkSize As New System.Drawing.Printing.PaperSize
          ObjPrinterSetting.PrinterName = "Epson FX1170"
          For i As Integer = 0 To ObjPrinterSetting.PaperSizes.Count - 1
              If ObjPrinterSetting.PaperSizes.Item(i).PaperName = mPaperSize.Trim Then
                  PkSize = ObjPrinterSetting.PaperSizes.Item(i)
                  Exit For
              End If
          Next
  
          If PkSize IsNot Nothing Then
              Dim myAppPrintOptions As CrystalDecisions.CrystalReports.Engine.PrintOptions = ObjCrReport.PrintOptions
              myAppPrintOptions.PrinterName = "Epson FX1170"
              myAppPrintOptions.PaperSize = CType(PkSize.RawKind, CrystalDecisions.Shared.PaperSize)
              ObjCrReport.PrintOptions.PaperOrientation = IIf(PaperOrientation = 1, _
                                      CrystalDecisions.Shared.PaperOrientation.Portrait, _
                                      CrystalDecisions.Shared.PaperOrientation.Landscape)
          End If
          PkSize = Nothing
      Catch ex As Exception
          MessageBox.Show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error)
      End Try
  End Sub
  </code></pre>
  
  <p>If I use <code>myAppPrintOptions.PaperSize = PaperSize.PaperLegal</code>, then Print Preview &amp; Printing appear correct, but I want to set custom paper size which is not showing in the <code>PaperSize</code> class.</p>
  
  <p>What’s wrong with above code? Why is it printing Letter Size where Crystal report preview otherwise shows custom paper in the size preview? Is there a better way to accomplish my goal?</p>