Masquer l'en-tête et le pied de page lors de l'impression d'un contrôle Web à l'aide d'ASP.NET
-
05-07-2019 - |
Question
Comment masquer l'en-tête "Page 1 sur 1" et le pied de page (url) lors de l'impression d'un contrôle Web dans ASP.NET?
Je le fais actuellement en ouvrant une nouvelle page sur le bouton Imprimer, cliquez dessus et cliquez dessus
protected void Page_Load(object sender, EventArgs e)
{
if( null != Session["Control"] )
{
Control ctrl = ( Control )Session["Control"];
PrintManager.PrintWebControl( ctrl );
Session["Control"] = null;
}
}
Ceci imprimera l'en-tête et le pied de page. Comment l'éviter?
La solution
Ce paramètre est configuré par l'utilisateur dans son navigateur. Leur n'est pas un moyen de le désactiver du code. Le mieux est d’inclure des instructions sur la configuration / désactivation des paramètres.
Voir un exemple ici: http://www.xheo.com/products/sps/default. aspx? print = true
Autres conseils
Vous devez utiliser les styles CSS et spécifier qu'ils s'appliquent à un type de support d'impression. Consultez cet article pour obtenir de l'aide. http://www.cantoni.org/articles/printstyle
Créez une feuille de style distincte pour les styles d'impression uniquement. Si vous souhaitez masquer quelque chose sur la page, utilisez {display: none}
comme attribut de style de cet élément. Ensuite, liez votre feuille de style à l'élément HEAD.
<link href="print.css" media="print" type="text/css" rel="stylesheet" />
Pour cela, nous utilisons une classe d'impression comme celle-ci
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();
}
modifiez ici une ligne dans la propriété de formulaire et définissez-la
frm.ResolveUrl("");
donc URl n'est pas visible lorsque la page est imprimée..je l'utilise avec succès.
Si vous utilisez Firefox et que le client puisse installer le this page module complémentaire .
Sinon, si vous utilisez Internet Explorer: google pour " MeadCo ScriptX ",
.(l'option FF est gratuite, l'option IE est gratuite pour les fonctionnalités de base uniquement)