日期:2014-05-18  浏览次数:21549 次

DevExpress中XtraReport如何控制打印尺寸大小 困我好几天了 !!!!
如题 效果如下面图片所示

平时打印的都是A4纸,现在我需要打印3种格式大小,宽都是210mm,长分别是:93.3mm,139.7mm,279.8mm
网上都说设置打印机的纸张大小,这个不适合我,因为这样我就必须设置每个客户的打印机的默认纸张大小了。
我想的是直接设置打印尺寸,就像线面图片所示

如何实现啊 这个问题困我好几天了

图片中是我看到一个DevExpress中的Demo,但是在相应的Report代码示例中没有这个示例,

(复制图片地址 在地址栏可以查看原图)


------解决方案--------------------
//检索单据内容
Share.ShareData ssd = new Share.ShareData();
ssd = Share.Funtions.BytesToShareData(Common.GlobalVar.Webinv.GetTransferorderforprint(strbillNumber));

//检索后 设置参数,如是否立即生效等
//const string tbNameBillType = "打印参数";
string rptAss = Convert.ToString(ssd.ADataSet.Tables["Print"].Rows[0]["RptAssembly"]);
string rptName = Convert.ToString(ssd.ADataSet.Tables["Print"].Rows[0]["RptFormName"]);

try
{
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(rptAss);//程序集名
object rptObj = asm.CreateInstance("easyDms." + rptName, false, System.Reflection.BindingFlags.Default, null, null, null, null);//程序集+form的类名。

DevExpress.XtraReports.UI.XtraReport xrp2 = (DevExpress.XtraReports.UI.XtraReport)rptObj;
xrp2.DataSource = ssd.ADataSet;
//PrintingSystem prn = new PrintingSystem();


//设置打印页的宽度和高度
xrp2.ReportUnit = DevExpress.XtraReports.UI.ReportUnit.TenthsOfAMillimeter; //设置单位为mm
xrp2.PaperKind = System.Drawing.Printing.PaperKind.Custom; //纸张类型自定义


try
{
xrp2.PageHeight = Convert.ToInt16(ssd.ADataSet.Tables["Print"].Rows[0]["PageHeight"]);
xrp2.PageWidth = Convert.ToInt16(ssd.ADataSet.Tables["Print"].Rows[0]["PageWidth"]);

//边距
for (int i = 0; i < xrp2.Bands.Count; i++)
{
if (xrp2.Bands[i].GetType().ToString() == "DevExpress.XtraReports.UI.TopMarginBand")
xrp2.Bands[i].HeightF = Convert.ToInt16(ssd.ADataSet.Tables["Print"].Rows[0]["PageTop"]) * 10;

if (xrp2.Bands[i].GetType().ToString() == "DevExpress.XtraReports.UI.BottomMarginBand")
xrp2.Bands[i].HeightF = Convert.ToInt16(ssd.ADataSet.Tables["Print"].Rows[0]["PageBottom"]) * 10;
}

xrp2.Margins.Left = Convert.ToInt16(ssd.ADataSet.Tables["Print"].Rows[0]["PageLeft"]) * 10;
xrp2.Margins.Right = Convert.ToInt16(ssd.ADataSet.Tables["Print"].Rows[0]["PageRight"]) * 10;

}
catch
{
//如果有错误,则取默认打印机的默认纸张
PrintDocument pd = new PrintDocument();
xrp2.PageHeight = Convert.ToInt16(pd.DefaultPageSettings.PaperSize.Height / 0.394);
xrp2.PageWidth = Convert.ToInt16(pd.DefaultPageSettings.PaperSize.Width / 0.394);
MessageBox.Show("打印页面设置不正确,使用默认纸张设置。", "提示");
}

//生成打印内容
xrp2.CreateDocument();
xrp2.ShowPreviewDialog();

//显示单据
//easyDms.Common.FormTempletPrint wprint = new easyDms.Common.FormTempletPrint();
//显示打印窗口
//wprint.printingSystem = (PrintingSystem)xrp2.PrintingSystem;
//wprint.S