日期:2014-05-20  浏览次数:21006 次

关于水晶报表自定义纸张的问题,请教各位
我在加载水晶报表,做了获取自定义的纸张处理

System.Drawing.Printing.PrintDocument doc = new System.Drawing.Printing.PrintDocument();

//记录标识自定义纸张的ID

int rawKind = 1;

//枚举出所有的打印纸尺寸 

// int i = doc.PrinterSettings.PaperSizes.Count;

//MessageBox.Show(i.ToString());

crt.PrintOptions.PrinterName = Printer;


for (int i = 0; i < doc.PrinterSettings.PaperSizes.Count; i++)

{
//找到自定义的纸张
if (doc.PrinterSettings.PaperSizes[i].PaperName == "MOMORD")

{

rawKind = doc.PrinterSettings.PaperSizes[i].RawKind;


// MessageBox.Show(doc.PrinterSettings.PaperSizes[i].PaperName);

}

}


crt.PrintOptions.PaperSize = (CrystalDecisions.Shared.PaperSize)rawKind;

crt.PrintOptions.PaperOrientation = PaperOrientation.Portrait;


用来控制自定义的打印纸型,可是在本机上调试没有问题


到客户端安装后,发现有错误


************** 异常文本 **************

System.Runtime.InteropServices.COMException (0x8002000B): 无效索引。 (异常来自 HRESULT:0x8002000B (DISP_E_BADINDEX))

在 CrystalDecisions.ReportAppServer.Controllers.PrintOutputControllerClass.ModifyPrintOptions(PrintOptions newVal)

在 CrystalDecisions.CrystalReports.Engine.PrintOptions.set_PaperSize(PaperSize value)

在 CL.Frm_ORDPrint.Frm_ORDPrint_Load(Object sender, EventArgs e)

在 System.Windows.Forms.Form.OnLoad(EventArgs e)

在 System.Windows.Forms.Form.OnCreateControl()



请你该如何处理,,我把那段代码注释掉 就不报了 但是报表预览的纸的大小就不是想要的效果了


先谢谢各位 麻烦回复一下


------解决方案--------------------
你调试看下那句报错
------解决方案--------------------
本机是好的为 调试的话 难道还要在客户端装个VS?
------解决方案--------------------
crt.PrintOptions.PaperSize = (CrystalDecisions.Shared.PaperSize)rawKind;
应该是这句有问题