c#利⽤webbrower控件打印html——实现打印页⾯设置
领导分配了⼀个任务,利⽤c#连接打印机,打印⼀个html页⾯,对于⼀个Java本专业还不太熟练的我,之前从未接触过c#,挑战还是很⼤的。
但是没办法,做呗
⾸先⼀个写c#的⼯具呗,所以下载了vs2015,实现⽅法如下:
1、新建⼀个form项⽬
2、form中集成⼀个webbrower控件去显⽰html
3、html中js调⽤c#中的打印⽅法,实现打印
4、打印的时候,如何设置⾃定义的页⾯设置,如页眉页脚、页边距、背景颜⾊等,了很多⽅法,各种尝试,通过修改注册表来实现
5、html中的js就可以调⽤Print()⽅法啦
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Collections;
using System.IO;
using Microsoft.Win32;
namespace printCar
{
[System.Runtime.InteropServices.ComVisible(true)] //与js交互必须的
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.WindowState = FormWindowState.Maximized;//初始窗⼝最⼤化
this.FormBorderStyle = FormBorderStyle.None;//设置窗⼝⽆边框
//this.webBrowser1.ObjectForScripting = new JSObject();
this.webBrowser1.Navigate("172.16.1.190:8083");//加载⽹页
webBrowser1.ObjectForScripting = this; //与js交互必须的
}
private void Form1_Load(object sender, EventArgs e)
{
{
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
}
public void Print()
{
string keyName = @"Software\Microsoft\Internet Explorer\PageSetup\";
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyName, true))
{
if (key != null)
generic是什么牌子打印机{
key.SetValue("footer", ""); //设置页脚为空
key.SetValue("header", ""); //设置页眉为空
key.SetValue("Print_Background", true); //设置打印背景颜⾊
key.SetValue("margin_bottom", 0); //设置下页边距为0
key.SetValue("margin_left", 0); //设置左页边距为0
key.SetValue("margin_right", 0); //设置右页边距为0
key.SetValue("margin_top", 0); //设置上页边距为0
this.webBrowser1.Print(); //打印
}
}
}
}
}
到此我还有两个问题:
1、我现在是打印的是控件显⽰的当前页,怎样才能js传递⼀个html⽚段,我c#后台实现打印
2、如何实时获取打印机的状态,返回给js,从⽽进⾏以下的逻辑代码
希望各位⼤神指点
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论