Программно установить пользовательский размер бумаги для Crystal Report

Я создал нестандартную бумагу формата "SUPP 15 x 14" вSetting - Printers - File - Server Properties. Сейчас я пытаюсь установить пользовательский размер бумаги для Crystal Report с помощью VB.net 2005.

Когда я запускаю отчет с VB.net, средство просмотра отчетов Crystal показывает правильный предварительный просмотр для нестандартного формата бумаги, но когда я даю команду печати, он печатает с размером бумаги по умолчанию. (например, письмо)

Вот код, который я использую для печати:

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

Если я используюmyAppPrintOptions.PaperSize = PaperSize.PaperLegal, затем Предварительный просмотр и печать отображаются правильно, но я хочу установить нестандартный размер бумаги, который не отображается наPaperSize класс.

Что не так с приведенным выше кодом? Почему печатается формат Letter, когда в предварительном просмотре отчета Crystal в предварительном просмотре размера отображается нестандартная бумага? Есть ли лучший способ достичь моей цели?

Ответы на вопрос(1)

Ваш ответ на вопрос