2017-10-19 44 views
8

Je suis en train d'imprimer à partir d'un contrôle de navigateur Web dans une WinForm application.Le question est-il fixe lettre comme format de papier par défaut, mais j'ai besoin A4. En outre, il définit automatiquement marges mal, je peux les définir pour corriger les paramètres manuellement, mais je veux le faire par programmation.Comment définir la taille du papier et l'impression des marges d'un contrôle du navigateur web

Comment est-ce possible?

Voici mon code à imprimer.

private void metroButton1_Click(object sender, EventArgs e) 
    { 
     loadprintData(); 
     // Create a WebBrowser instance. 
     WebBrowser webBrowserForPrinting = new WebBrowser(); 

     // Add an event handler that prints the document after it loads. 
     wa.DocumentCompleted += 
      new WebBrowserDocumentCompletedEventHandler(ShowPrintDocument); 
     wa.ShowPrintPreviewDialog(); 
     reloadpage(); 

    } 
    private void ShowPrintDocument(object sender,WebBrowserDocumentCompletedEventArgs e) 
    { 
     // Print the document now that it is fully loaded. 
     ((WebBrowser)sender).ShowPrintPreviewDialog(); 

     // Dispose the WebBrowser now that the task is complete. 
     // ((WebBrowser)sender).Dispose(); 
     reloadpage(); 
    } 
    private void PrintDocument(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     // Print the document now that it is fully loaded. 
     ((WebBrowser)sender).Print(); 

     // Dispose the WebBrowser now that the task is complete. 
     // ((WebBrowser)sender).Dispose(); 
    } 
+0

Toutes les réponses sont ici: https://stackoverflow.com/questions/19098571/webbrowser-print-settings –

Répondre

0

Eh bien j'ai essayé tant de choses mais à la fin, j'ai trouvé qu'il n'est pas possible de programmer le réglage de l'imprimante à partir du code facilement. mais je pourrais faire la marge par la réponse de @jeremy. Et j'ai découvert que pour l'impression à partir du contrôle WebBrowser, il utilise Internet Explorer tout ce que nous savons, mais au début, il utilisait l'explorateur 7 et j'ai dû le changer en explorateur 11 par défaut. Ensuite, j'ai vu l'explorateur n'a pas ses propres paramètres d'impression. il utilise les paramètres par défaut des imprimantes. Vous devez donc modifier les aperçus des imprimantes par défaut. Vous verrez l'aperçu s'afficher de cette façon.

8

Pour modifier la taille de la marge que vous devez modifier le Registre (HKCU) avant d'imprimer:

string pageSetupKey = "Software\\Microsoft\\Internet Explorer\\PageSetup"; 
bool isWritable = true; 

RegistryKey rKey = Registry.CurrentUser.OpenSubKey(pageSetupKey, isWritable); 

if (stringToPrint.Contains("something")) 
{ 
    rKey.SetValue("margin_bottom", 0.10); 
    rKey.SetValue("margin_top", 0.25); 
} 
else 
{ 
    //Reset old value 
    rKey.SetValue("margin_bottom", 0.75); 
    rKey.SetValue("margin_top", 0.75); 
} 

Ne pas oublier de le remettre à la valeur par défaut.

Ref Microsoft KB Article


Pour modifier la taille du papier que vous devez modifier le (HKCU) Registre dans un autre endroit avant d'imprimer:

string pageSetupKey2 = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"; 
isWritable = true; 

rKey = Registry.CurrentUser.OpenSubKey(pageSetupKey2, isWritable); 

// Use 1 for Portrait and 2 for Landccape 
rKey.SetValue("PageOrientation", 2, RegistryValueKind.DWord); 
// Specifies paper size. Valid settings are 1=letter, 5=Legal, 9=A4, 13=B5.Default setting is 1. 
rKey.SetValue("PaperSize", 9, RegistryValueKind.DWord); 
// Specifies print quality 
rKey.SetValue("PrintQuality ", 1, RegistryValueKind.DWord); 

Ref MSDN

+0

Merci beaucoup pour votre réponse. Je pense que la solution est en cours d'utilisation de votre solution. mais je pense qu'il me manque quelque chose. quand j'ajoute ces lignes et après j'ajoute mon wa.ShowPrintPreviewDialog(); il y a une boîte de dialogue d'impression avant impression vide qui est vide et après que l'aperçu d'impression reguler apparaît avec le problème précédent. Qu'est-ce que je rate? –

+0

Pouvez-vous vérifier les causes possibles ici https://support.microsoft.com/fr-fr/help/973479/unable-to-print-or-view-the-print-preview-of-a-webpage-in- Internet-exp –

+0

En fait, les marges fonctionnent très bien comme vous le souhaitez. mais les orientations ne fonctionnent pas et la taille de la page.i vérifié mes paramètres IE et fait tout ce qu'ils ont dit. –