Ocultar el encabezado y el pie de página al imprimir un control web utilizando ASP.NET
-
05-07-2019 - |
Pregunta
¿Cómo puedo ocultar el encabezado como 'Página 1 de 1' y pie de página (url) al imprimir un webcontol en ASP.NET?
Lo estoy haciendo actualmente abriendo una nueva página en el botón Imprimir, haga clic en ande dentro de ella
protected void Page_Load(object sender, EventArgs e)
{
if( null != Session["Control"] )
{
Control ctrl = ( Control )Session["Control"];
PrintManager.PrintWebControl( ctrl );
Session["Control"] = null;
}
}
Esto imprimirá el encabezado y el pie de página. ¿Cómo evitarlo?
Solución
Esa configuración está configurada por el usuario en su navegador. No hay manera de desactivarlo desde el código. Su mejor apuesta es incluir instrucciones sobre cómo configurar / deshabilitar la configuración.
Vea un ejemplo aquí: http://www.xheo.com/products/sps/default. aspx? print = true
Otros consejos
Debe usar estilos CSS y especificar que se apliquen a un tipo de impresión de medios. Consulte este artículo para obtener ayuda; http://www.cantoni.org/articles/printstyle
Básicamente, cree una hoja de estilo separada solo para los estilos de impresión. Si desea ocultar algo en la página, utilice {display: none}
como uno de los atributos de estilo de esos elementos. Luego vincula tu hoja de estilo en el elemento HEAD;
<link href="print.css" media="print" type="text/css" rel="stylesheet" />
Para esto estamos usando una clase de impresión como esta
public static void PrintWebControl(Control ctrl)
{
PrintWebControl(ctrl, string.Empty);
}
public static void PrintWebControl(Control ctrl, string Script)
{
StringWriter stringWrite = new StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
if (ctrl is WebControl)
{
Unit w = new Unit(100, UnitType.Percentage); ((WebControl)ctrl).Width = w;
}
Page pg = new Page();
pg.EnableEventValidation = false;
if (Script != string.Empty)
{
pg.ClientScript.RegisterStartupScript(pg.GetType(), "PrintJavaScript", Script);
}
HtmlForm frm = new HtmlForm();
pg.Controls.Add(frm);
// done changes on below 1 line for unassigned header URL //
frm.ResolveUrl("");
frm.Attributes.Add("runat", "server");
frm.Controls.Add(ctrl);
pg.DesignerInitialize();
pg.RenderControl(htmlWrite);
string strHTML = stringWrite.ToString();
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Write(strHTML);
HttpContext.Current.Response.Write("<script>window.print();</script>");
HttpContext.Current.Response.End();
}
aquí simplemente cambia una línea en la propiedad de formulario y configúralo
frm.ResolveUrl("");
por lo que no se puede ver la URl cuando se imprime la página ... lo uso con éxito.
Si está usando Firefox, y puede hacer que el cliente instale esto complemento .
De lo contrario, si está utilizando Internet Explorer: google para " MeadCo ScriptX "
(La opción FF es gratuita, la opción IE es gratuita solo para la funcionalidad básica)