كيفية طباعة صور الخلفية المطبقة باستخدام CSS باستخدام التحكم في WebBrowser
-
09-06-2019 - |
سؤال
أنا أستخدم عنصر تحكم متصفح الويب في winforms واكتشفت الآن أن صور الخلفية التي أستخدمها باستخدام CSS غير مضمنة في المطبوعات.
هل هناك طريقة لجعل متصفح الويب يطبع خلفية المستند المعروض أيضًا؟
يحرر:وبما أنني أردت القيام بذلك برمجياً، فقد اخترت هذا الحل:
using Microsoft.Win32;
...
RegistryKey regKey = Registry.CurrentUser
.OpenSubKey("Software")
.OpenSubKey("Microsoft")
.OpenSubKey("Internet Explorer")
.OpenSubKey("Main");
//Get the current setting so that we can revert it after printjob
var defaultValue = regKey.GetValue("Print_Background");
regKey.SetValue("Print_Background", "yes");
//Do the printing
//Revert the registry key to the original value
regKey.SetValue("Print_Background", defaultValue);
هناك طريقة أخرى للتعامل مع ذلك وهي قراءة القيمة وإخطار المستخدم بتعديلها بنفسه قبل الطباعة.يجب أن أوافق على أن التغيير والتبديل في السجل بهذه الطريقة ليس ممارسة جيدة، لذا فأنا منفتح على أي اقتراحات.
شكرا لجميع ملاحظاتك
المحلول
إذا كنت تريد تغيير أحد إعدادات النظام المهمة، فتأكد أولاً من قراءة الإعداد الحالي واستعادته عند الانتهاء.
أنا أعتبر هذا سيئ جدا تدرب في المقام الأول، ولكن إذا كان عليك القيام بذلك، فكن لطيفًا.
Registry.LocalMachine
حاول أيضًا التغيير LocalUser
بدلاً من LocalMachine
- بهذه الطريقة، إذا تعطل تطبيقك (وسيحدث ذلك)، فسوف تربك المستخدم فقط، وليس كل من يستخدم الجهاز.
نصائح أخرى
مفتاح التسجيل الآخر سيكون:hkey_current_user software microsoft Internet Explorer pagesetup print_background hkey_local_machine softwar
مفتاح HKCU المقابل لهذا الإعداد هو:HKEY_CURRENT_USER\البرمجيات\مايكروسوفت\إنترنت إكسبلورر\الرئيسية\Print_Background
بشكل افتراضي، لا يقوم المتصفح بطباعة صور الخلفية على الإطلاق.
في فايرفوكس
* File > Page Setup > Check Off "Print Background"
* File > Print Preview
في آي إي
* Tools > Internet Options > Advanced > Printing
* Check Off "Print Background Images and Colors"
في الأوبرا
* File > Print Options > Check Off "Print Page Background"
* File > Print Preview (You may have to scroll down/up to see it refresh)
var sh = new ActiveXObject("WScript.Shell");
key = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main\\Print_Background";
var defaultValue = sh.RegRead(key);
sh.RegWrite(key,"yes","REG_SZ");
document.frames['detailFrame'].focus();
document.frames['detailFrame'].print();
sh.RegWrite(key,defaultValue,"REG_SZ");
return false;