C# Lodop实现打印

项目的Debug文件夹下有个template文件夹,里面有用到的js、自己建的要打印的网页和用到的背景图

1、打印方法:

class print
{
    public void printzb(string bh){

        //要打印的变量
        string zwjyzsbh = "123456";
        string zsfwdp = "";
        string zsfwdc = "";
        string zsfwdxian = "";
        //获取打印背景图的地址
        string pash="";
        string pashimg="";

        //这里用到了VelocityHelper模板
        VelocityHelper vh = new VelocityHelper();

        vh.Init(@"template");//初始化,指定模板文件的相对路径,就是工程里Debug文件里的路径

        //put后,在网页就可以调用这些变量,就和spring的那一套流程类似,jsp通过jstl调用
        vh.Put("title", "员工信息");
        vh.Put("zwjyzsbh", zwjyzsbh);
        vh.Put("zsfwdp", zsfwdp);
        vh.Put("zsfwdc", zsfwdc);
        vh.Put("zsfwdxian", zsfwdxian);

        pash = Directory.GetCurrentDirectory();//工程的Debug所在目录
        pash = pash.Replace("\\", "/");
        pashimg = pash + "\\template\\JY_DYJY_SJZWJYZS.jpg";
        pashimg=pashimg.Replace("\\", "/");
        vh.Put("pash", pash);
        vh.Put("pashimg", pashimg);

        //新建窗体FrmWebBrowser,拉一个控件webBrowser,在该控件显示所要打印的页面page.htm
        String htm = vh.Display("page.htm");
        FrmWebBrowser frmView = new FrmWebBrowser();
        frmView.webBrowser1.DocumentText = htm;
    }
}  

2、要显示的页面:page.htm,(自己新建一个)

<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE>$title</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META content="$title" name=description>
<META content="$title" name=keywords>
<script type="text/javascript" src="http://127.0.0.1:8000/CLodopfuncs.js"></script>
<script type="text/javascript" src="$pash/template/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="$pash/template/bootstrap.min.js"></script>
<script type="text/javascript" src="$pash/template/jquery.bootstrap.js"></script>
<script type="text/javascript" src="$pash/template/jquery.form.js"></script>
<script type="text/javascript" src="$pash/template/jquery.validate.min.js"></script>
<script type="text/javascript" src="$pash/template/messages_bs_zh.js"></script>
<script type="text/javascript" src="$pash/template/LodopFuncs.js"></script>
<script>
    $(function () {
        LODOP = getLodop();
        LODOP.NewPage();
        LODOP.ADD_PRINT_TEXT(200, 150, 375, 22, "$zwjyzsbh");//(要打印的文本,前四个是坐标,最后是获取前面put的变量)
        LODOP.ADD_PRINT_TEXT(170, 270, 75, 22, "$zsfwdp");
        LODOP.ADD_PRINT_TEXT(170, 400, 75, 22, "$zsfwdc");
        LODOP.ADD_PRINT_TEXT(170, 400, 75, 22, "$zsfwdxian");

        LODOP.ADD_PRINT_SETUP_BKIMG("<img width=‘760‘ height=‘1122‘ border=‘0‘ src=‘$pashimg‘>");//增加背景图
        LODOP.SET_SHOW_MODE("BKIMG_IN_PREVIEW", 1);//打印预览是否显示背景图,1:显示
        LODOP.PREVIEW();//预览
        });
</script>

</HEAD>

<body>

</body>
</HTML>

顺便看下这个: http://blog.csdn.net/lovelylord/article/details/43405927

3、FrmWebBrowser窗体,用来显示要打印的页面

3、VelocityHelper模板类,用来生成html,需要引入NVelocity。不用改

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using NVelocity;
using NVelocity.App;
using NVelocity.Exception;
using NVelocity.Runtime;
using System.IO;
using Commons.Collections;
using NVelocity.Context;

namespace gjjy
{
    class NVelocityHelper
    {   ///
        /// NVelocity模板工具类 VelocityHelper
        ///
        public class VelocityHelper
        {
        private VelocityEngine velocity = null;
        private IContext context = null;
        ///
        /// 构造函数
        ///
        ///模板文件夹路径
        public VelocityHelper(string templatDir)
        {
        Init(templatDir);
        }
        ///
        /// 无参数构造函数
        ///
        public VelocityHelper() { ;}
        ///
        /// 初始话NVelocity模块
        ///
        ///模板文件夹路径
        public void Init(string templatDir)
        {
        //创建VelocityEngine实例对象
        velocity = new VelocityEngine();

        //使用设置初始化VelocityEngine
        ExtendedProperties props = new ExtendedProperties();
        props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");
        props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, templatDir);
        props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8");
        props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
        velocity.Init(props);

        //为模板变量赋值
        context = new VelocityContext();
        }
        ///
        /// 给模板变量赋值
        ///
        ///模板变量
        ///模板变量值
        public void Put(string key, object value)
        {
            if (context == null)
            context = new VelocityContext();
            context.Put(key, value);
        }
        ///
        /// 显示模板
        ///
        ///模板文件名
        public String Display(string templatFileName)
            {
                //从文件中读取模板
                Template template = velocity.GetTemplate(templatFileName);
                //合并模板
                StringWriter writer = new StringWriter();
                template.Merge(context, writer);
                return writer.ToString();
            }
        }
    }
}

4、检查电脑是否已安装Lodop

public bool checkLodop()
{
    Microsoft.Win32.RegistryKey uninstallNode = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall");
    foreach (string subKeyName in uninstallNode.GetSubKeyNames())
    {
        Microsoft.Win32.RegistryKey subKey = uninstallNode.OpenSubKey(subKeyName);
        object displayName = subKey.GetValue("DisplayName");
        if (displayName != null)
        {
            //MessageBox.Show(displayName.ToString());
            if (displayName.ToString().Contains("C-Lodop(32-bit)"))
            {
                return true;
                 //MessageBox.Show(displayName.ToString());
            }
        }
    }
    return false;
}

自动弹出安装界面

System.Diagnostics.Process.Start(Application.StartupPath + "\\" + "CLodopPrint_Setup_for_Win32NT_2.047.exe");
时间: 2024-10-12 16:41:33

C# Lodop实现打印的相关文章

Lodop实现打印功能

LodopFuncs.js: var CreatedOKLodop7766=null; function getLodop(oOBJECT,oEMBED){ /************************** 本函数根据浏览器类型决定采用哪个页面元素作为Lodop对象: IE系列.IE内核系列的浏览器采用oOBJECT, 其它浏览器(Firefox系列.Chrome系列.Opera系列.Safari系列等)采用oEMBED, 如果页面没有相关对象元素,则新建一个或使用上次那个,避免重复生成.

Lodop如何打印直线

Lodop打印设计提供了可视化设计,生成代码的方便,在打印设计界面上,选择添加打印项的时候,可以看到没有添加直线选项,可添加斜线,然后把添加的斜线调整成直线:线宽=高 -----水平直线线宽=宽-----垂直直线线宽=高=宽----点线宽!=高&&线宽!=宽----斜线 原文地址:https://www.cnblogs.com/huaxie/p/9712832.html

打印函数 lodop

Lodop属性和方法详解 例子:LODOP.PRINT_INIT("打印任务名");LODOP.SET_PRINT_COPIES(2);bdhtml=window.document.body.innerHTML;var hei = $('#div1').outerHeight();string = prnhtml;LODOP.SET_PRINT_PAGESIZE (3,'6cm','2cm',2);LODOP.ADD_PRINT_HTM(0,0,227,hei,string);LODO

利用lodop打印控件轻松实现批量打印

最近在做一个打印程序,要实现批量打印功能,在网上找了很多天,也在tp官网咨询大牛们,对大家的的提议我一一进行了研究,总结如下:要实现批量打印可以有两个办法: 一是利用专业的报表程序,能实现十分复杂的需求,但学习报表也是很痛苦的一件事,我专心研究了一天都没啥进展,也许我实在太菜了.这种方法推荐锐浪报表,免费还好用. 二是利用js插件实现,也在网上找了很多,最后感谢hunduncn,他建议我使用lodop(详见:http://www.thinkphp.cn/topic/12938.html),由于对

LODOP 使用 和分页 加上每一页打印多少份

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="Scripts/LodopFunc

功能强大的web打印控件lodop的使用

打印是很多web系统都需要的功能,最近找到一款功能强大,使用简单,价格便宜的web打印工具Lodop,免费也能用,不过有水印,也不贵商业开发建议购买. 废话不多说,拿来就用,从简单的打印开始. 1.下载,放入项目中,引入控件. <script language="javascript" src="~/Content/Lodop6/LodopFuncs.js"></script> <object id="LODOP_OB&quo

Lodop打印控件

首先引用js 4 <script type="text/javascript" src="jquery.min.js"></script> 5 <script type="text/javascript" src="http://127.0.0.1:9999/CLodopfuncs.js?priority=1"></script> 6 <script type="

关于lodop打印插件

在使用之前请记得先下载lodop-----js文件 var LODOP;  //声明为全局变量 function prn1_preview() {         LODOP.PRINT_INIT("打印生产单");        LODOP.SET_PRINT_PAGESIZE(0,2100,1390,"");         var pageNum = ${pageNum?c};//pageNum为当前页码        for(var i =1; i<p

Web打印 Lodop打印控件 bootstrap框架

一.下载Lodop打印控件http://www.lodop.net/ 二.将解压的Lodop文件夹加入到项目中 三.在web页面中引入Lodop的js文件 <script src="../Scripts/Lodop/LodopFuncs.js"></script> <object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" wi