Программно установить пользовательский размер бумаги для 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 в предварительном просмотре размера отображается нестандартная бумага? Есть ли лучший способ достичь моей цели?