IndexOutOfRangeException when using PrintToPrinter in vb.net 2003 and a custom paper size with Crystal Reports v10
Posted on 2004-10-15
In VB.NET I'm trying to print a crystal report directly to a printer. The report it a label with a bar code on it, 8.2cm by .9cm and I'm printing it to a zebra 105SL label printer.
This worked fine with the version of crystal reports that came with VS.NET 2003 ( v9 ) but when we upgraded to Crystal Reports v10 it no longer can print and I get an exception.
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at CrystalDecisions.CrystalReports.Engine.Migration.PrintOptionsConverter.EROMPaperSizeToDNETPaperSize(CrPaperSizeEnum ePaperSize)
at CrystalDecisions.CrystalReports.Engine.PrintOptions.CopyTo(PrinterSettings printer, PageSettings page)
at CrystalDecisions.CrystalReports.Engine.FormatEngine.PrintToPrinter(Int32 nCopies, Boolean collated, Int32 startPageN, Int32 endPageN)
at frmMainScreen.ibutHelp_Click() in C:\@Dev\RMA\Forms\MainScreen.vb:line 1497
What index is it talking about? If I modify the report to be letter size and print it on a regular printer it prints fine. I think the problem probably has something to do with the papersize not being standard and something they may have changed in Crystal Reports v10.
I tried to export the report to a pdf instead of printing using -> fReport.ExportToDisk(ExportFormatType.PortableDocFormat, "c:\testItemLabel.pdf") and it exports perfectly with the correct papersize.
Here's the code I'm using to print:
Dim cReport As New ItemLabel
cReport.SetDatabaseLogon("user", "password", "server", "database")
cReport.PrintOptions.PrinterName = "\\printserver\Zebra"
cReport.FormatEngine.PrintToPrinter(1, False, 0, 0)
Any help would be greatly appreciated