2017-10-19 81 views
8

próbuję drukować z poziomu przeglądarki internetowej w winform application.The kwestią jest to ustawia nas jako domyślnego formatu papieru, ale muszę A4. Również automatycznie ustawia niektóre błędne wartości marginesy, mogę ustawić je ręcznie, ale chcę to zrobić programowo.Jak ustawić rozmiar papieru i drukowanie Marginesy z kontroli przeglądarki internetowej

Jak to jest możliwe?

Oto mój kod do wydrukowania.

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

Wszystkie odpowiedzi są tutaj: https://stackoverflow.com/questions/19098571/webbrowser-print-settings –

Odpowiedz

0

Dobrze Próbowałem tak wiele rzeczy, ale na końcu okazało się, że nie jest możliwe łatwe zaprogramowanie ustawienia drukarki z kodu. ale mógłbym zrobić margines dzięki odpowiedzi @jeremy. I dowiedziałem się, że do drukowania z formantu WebBrowser korzysta z odkrywcy internetu wszystko, co wiemy, ale na początku używało Explorera 7 i musiałem go zmienić na Explorer 11 jako domyślny. Potem zobaczyłem, że eksplorator nie ma własnych ustawień drukowania. używa domyślnych ustawień drukarek. Musisz zmienić domyślny podgląd drukarek. Zobaczysz podgląd w ten sposób.

8

Aby zmienić rozmiar marginesu trzeba edytować (HKCU) rejestr przed drukowaniem:

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); 
} 

nie zapomnij, aby ustawić go z powrotem do domyślnego.

Ref Microsoft KB Article


Aby zmienić rozmiar papieru trzeba edytować (HKCU) rejestru w innym miejscu przed drukowaniem:

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

Wielkie dzięki za odpowiedź. Myślę, że rozwiązanie jest w drodze za pomocą twojego rozwiązania. ale myślę, że czegoś mi brakuje. kiedy dodaję te linie, a następnie dodaję moje wa.ShowPrintPreviewDialog(); pojawia się puste okno podglądu wydruku, które jest puste, a następnie pojawia się podgląd wydruku regulatora z poprzednim problemem. czego mi brakuje? –

+0

Czy możesz sprawdzić możliwe przyczyny tutaj https://support.microsoft.com/en-au/help/973479/unable-to-print-or-view-the-print-preview-of-a-webpage-in- internet-exp –

+0

Właściwie marginesy działają na Twoją miarę. ale orientacje nie działają i rozmiar strony. Sprawdziłem moje ustawienia IE i zrobiłem wszystko, co powiedzieli. –

Powiązane problemy