如何防止用户打印打印文档的内容,只显示数据? [英] How to prevent user from print content of print documents and only show data ?

查看:76
本文介绍了如何防止用户打印打印文档的内容,只显示数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题


如何阻止用户打印打印文档的内容并仅显示数据?


代码低于工作成功且没有任何问题


唯一的问题是报告document.print在打印预览上显示数据 


同时它是打印数据 


实际上我不需要打印数据 


我只需预览数据,但下面的代码打印数据并显示 


对话框pox打印1页 


如何防止打印数据?


数据表格式检查 

 public DataTable GetChecked()
{
DataTable table = new DataTable();
table.Columns.Add(" MemberCode",typeof(string));

table.Columns.Add(" SpecialCode",typeof(string));

table.Columns.Add(" Name",typeof(string));

table.Columns.Add(" MemberImage",typeof(Byte []));


for(int i = 0; i< dtDisplayDataPayment.Rows.Count; i ++)
{

bool Ischecked = Convert.ToBoolean( GridFooter.Rows [I] .Cells [" PrintFlag"]。值);
if(Ischecked == true)
{
DataRow newRow = table.NewRow();
newRow [" MemberCode"] = Utilities.ObjectConverter.ConvertToString(dtDisplayDataPayment.Rows [i] [" MemberCode"]);
newRow [" SpecialCode"] = Utilities.ObjectConverter.ConvertToString(dtDisplayDataPayment.Rows [i] [" SpecialCode"]);
newRow [" Name"] = Utilities.ObjectConverter.ConvertToString(dtDisplayDataPayment.Rows [i] [" Name"]);


if(dtDisplayDataPayment.Rows [i] [" MemberImage"]!= System.DBNull.Value)
{
byte [] photo_aray =(byte [])dtDisplayDataPayment.Rows [I] [" MemberImage"];
System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
Image img =(Image)converter.ConvertFrom(photo_aray);
newRow [" MemberImage"] = imageToByteArray(img);


}


table.Rows.Add(newRow);
}
}

返回表;


}




 void document_PrintPage(object sender,PrintPageEventArgs e)
{
dtGetChecked = GetChecked();
PrintDocument document =(PrintDocument)sender;
Graphics g = e.Graphics;

画笔刷=新的SolidBrush(Color.Black);
钢笔=新笔(刷);
Font font = new Font(" Arial",10,FontStyle.Bold);
Font fonte = new Font(" Arial",15,FontStyle.Bold);
int x = 0,y = 0,width = 200,height = 30;

SizeF sizeeee = g.MeasureString(" TIME ::",fonte);
float xPaddingeee =(width - sizeeee.Width)/ 2;
g.DrawString(" TIME ::",fonte,brush,x + xPaddingeee,y + 5);
x + =宽度;


SizeF sizee = g.MeasureString(DateTime.Now.ToString(),fonte);
float xPaddinge =(width - sizee.Width)/ 2;

g.DrawString(DateTime.Now.ToString(),fonte,brush,x + xPaddinge,y + 5);
x + =宽度;

for(int kk = 0; kk< 2; kk ++)
{
SizeF sizeee = g.MeasureString("",font);
float xPaddingee =(width - sizee.Width)/ 2;

g.DrawString("",font,brush,x + xPaddingee,y + 5);
x + =宽度;
}
x = 0;
y + = 60;


foreach(dtGetChecked.Columns中的DataColumn列)
{

dtGetChecked.Columns [0] .ColumnName ="كودالعضو" ;;
dtGetChecked.Columns [1] .ColumnName ="الكودالخاص" ;;
dtGetChecked.Columns [2] .ColumnName ="الاسم" ;;
dtGetChecked.Columns [3] .ColumnName ="صورهشخصيه" ;;
// ====
g.DrawRectangle(笔,x,y,宽度,高度);
SizeF size = g.MeasureString(column.ColumnName,fonte);
float xPadding =(width-size.Width)/ 2;

g.DrawString(column.ColumnName,fonte,brush,x + xPadding,y + 5);
x + =宽度;
}


x = 0;
y + = 30;
int columnCount = dtGetChecked.Columns.Count;


foreach(dtGetChecked.Rows中的DataRow行)
{
for(int i = 0; i< columnCount; i ++)
{
g.DrawRectangle(笔,x,y,宽度,高度);
SizeF size = g.MeasureString(row [i] .ToString(),font);
float xPadding =(width-size.Width)/ 2;
if(i == 3)
{
if(row [i]!= System.DBNull.Value)
{
Point loc = new Point(Utilities) .ObjectConverter.ConvertToInteger(x + xPadding),y + 5);
//g.DrawImage(byteArrayToImage((byte[])row[i]),x + xPadding,y + 5);
g.DrawImage(byteArrayToImage((byte [])row [i]),new Rectangle(x + 60,y,50,30));
}

}
其他
{


g.DrawString(row [i] .ToString(),font ,刷,x + xPadding,y + 5);
}

x + =宽度;
}
x = 0;
y + = 30;
}

用于按钮打印预览的代码

 private void PrintPreview_Click(object sender,EventArgs e)
{

PrintDocument document = new PrintDocument();
PrintController printController = new StandardPrintController();
document.PrintController = printController;
document.PrintPage + = new PrintPageEventHandler(document_PrintPage);



PrintPreviewDialog ppDialog = new PrintPreviewDialog();

((ToolStripButton)((ToolStrip)ppDialog.Controls [1])。Items [0])。Enabled = false;
ppDialog.Document = document;
ppDialog.Show();




}

所以,请帮助我


我想在两天之前,直到现在还没达到如何防止打印?




解决方案

您好,


在以下帖子中是一系列禁用打印按钮的选项。


https:// stackoverflow。 COM /问题/ 3772776 /禁止打印按钮式净打印预览对话框


Problem

How to prevent user from print content of print documents and only show data ?

code below work success and without any problem

only problem is report document.print show data on print preview 

and in same time it is print data 

actually i dont need to print data 

i need to preview data only but code below on print data and show 

dialog pox print 1 of page 

How to prevent print data please ?

datatable get checked 

public DataTable GetChecked()
        {
            DataTable table = new DataTable();
            table.Columns.Add("MemberCode", typeof(string));
           
            table.Columns.Add("SpecialCode", typeof(string));
            
            table.Columns.Add("Name", typeof(string));
            
            table.Columns.Add("MemberImage", typeof(Byte[]));
           
            
            for (int i = 0; i < dtDisplayDataPayment.Rows.Count; i++)
            {

                bool Ischecked = Convert.ToBoolean(GridFooter.Rows[i].Cells["PrintFlag"].Value);
                if (Ischecked == true)
                {
                    DataRow newRow = table.NewRow();
                    newRow["MemberCode"] = Utilities.ObjectConverter.ConvertToString(dtDisplayDataPayment.Rows[i]["MemberCode"]);
                    newRow["SpecialCode"] = Utilities.ObjectConverter.ConvertToString(dtDisplayDataPayment.Rows[i]["SpecialCode"]);
                    newRow["Name"] = Utilities.ObjectConverter.ConvertToString(dtDisplayDataPayment.Rows[i]["Name"]);

                   
                        if (dtDisplayDataPayment.Rows[i]["MemberImage"] != System.DBNull.Value)
                        {
                            byte[] photo_aray = (byte[])dtDisplayDataPayment.Rows[i]["MemberImage"];
                            System.Drawing.ImageConverter converter = new System.Drawing.ImageConverter();
                            Image img = (Image)converter.ConvertFrom(photo_aray);
                            newRow["MemberImage"] = imageToByteArray(img);
                        
                     
                    }
                    
                   
                    table.Rows.Add(newRow);
                }
            }

            return table;


        }


void document_PrintPage(object sender, PrintPageEventArgs e)
        {
            dtGetChecked = GetChecked();
            PrintDocument document = (PrintDocument)sender;
            Graphics g = e.Graphics;

            Brush brush = new SolidBrush(Color.Black);
            Pen pen = new Pen(brush);
            Font font = new Font("Arial", 10, FontStyle.Bold);
            Font fonte = new Font("Arial", 15, FontStyle.Bold);
            int x = 0, y = 0, width = 200, height = 30;

            SizeF sizeeee = g.MeasureString("TIME :: ", fonte);
            float xPaddingeee = (width - sizeeee.Width) / 2;
            g.DrawString("TIME :: ", fonte, brush, x + xPaddingeee, y + 5);
            x += width;


            SizeF sizee = g.MeasureString(DateTime.Now.ToString(), fonte);
            float xPaddinge = (width - sizee.Width) / 2;

            g.DrawString(DateTime.Now.ToString(), fonte, brush, x + xPaddinge, y + 5);
            x += width;

            for (int kk = 0; kk < 2; kk++)
            {
                SizeF sizeee = g.MeasureString("", font);
                float xPaddingee = (width - sizee.Width) / 2;

                g.DrawString("", font, brush, x + xPaddingee, y + 5);
                x += width;
            }
            x = 0;
            y += 60;


            foreach (DataColumn column in dtGetChecked.Columns)
            {
                
                dtGetChecked.Columns[0].ColumnName = "كود العضو";
                dtGetChecked.Columns[1].ColumnName = "الكود الخاص";
                dtGetChecked.Columns[2].ColumnName = "الاسم";
                dtGetChecked.Columns[3].ColumnName = "صوره شخصيه";
                //====
                g.DrawRectangle(pen, x, y, width, height);
                SizeF size = g.MeasureString(column.ColumnName, fonte);
                float xPadding = (width - size.Width) / 2;
               
                g.DrawString(column.ColumnName, fonte, brush, x + xPadding, y + 5);
                x += width;
            }


            x = 0;
            y += 30;
            int columnCount = dtGetChecked.Columns.Count;

           
            foreach (DataRow row in dtGetChecked.Rows)
            {
                for (int i = 0; i < columnCount; i++)
                {
                    g.DrawRectangle(pen, x, y, width, height);
                    SizeF size = g.MeasureString(row[i].ToString(), font);
                    float xPadding = (width - size.Width) / 2;
                    if (i == 3)
                    {
                        if (row[i] != System.DBNull.Value)
                        {
                            Point loc = new Point(Utilities.ObjectConverter.ConvertToInteger( x + xPadding), y + 5);
                            //g.DrawImage(byteArrayToImage((byte[])row[i]), x + xPadding, y + 5);
                            g.DrawImage(byteArrayToImage((byte[])row[i]), new Rectangle(x+60, y , 50, 30));
                        }
                       
                    }
                    else
                    {


                        g.DrawString(row[i].ToString(), font, brush, x + xPadding, y + 5);
                    }
                    
                    x += width;
                }
                x = 0;
                y += 30;
            }

code using for button print preview

private void PrintPreview_Click(object sender, EventArgs e)
        {
       
            PrintDocument document = new PrintDocument();
            PrintController printController = new StandardPrintController();
            document.PrintController = printController;
            document.PrintPage += new PrintPageEventHandler(document_PrintPage);
          
          

            PrintPreviewDialog ppDialog = new PrintPreviewDialog();
        
            ((ToolStripButton)((ToolStrip)ppDialog.Controls[1]).Items[0]).Enabled = false;
            ppDialog.Document = document;
            ppDialog.Show();
           

         
           
        }

so please can you help me 

i think before two days and until now not reach how to prevent print ?

解决方案

Hello,

In the following post there are a range of options to disable the print button.

https://stackoverflow.com/questions/3772776/disabling-print-button-in-net-print-preview-dialog


这篇关于如何防止用户打印打印文档的内容,只显示数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆