C# Lodop实现打印

摘要:
//此处使用VelocityHelper模板VelocityHelpervh=newVelocityHelp();vh.Init(@“template”);FrmWebBrowsermView=newFrmWebBrowser();frmView.webBrowser1.DocumentText.htm;(自己创建一个)<HTML>

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

C# Lodop实现打印第1张

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="http://t.zoukankan.com/$pash/template/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="http://t.zoukankan.com/$pash/template/bootstrap.min.js"></script>
<script type="text/javascript" src="http://t.zoukankan.com/$pash/template/jquery.bootstrap.js"></script>
<script type="text/javascript" src="http://t.zoukankan.com/$pash/template/jquery.form.js"></script>
<script type="text/javascript" src="http://t.zoukankan.com/$pash/template/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://t.zoukankan.com/$pash/template/messages_bs_zh.js"></script>
<script type="text/javascript" src="http://t.zoukankan.com/$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     border='0' src='http://t.zoukankan.com/$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窗体,用来显示要打印的页面

C# Lodop实现打印第2张

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(@"SOFTWAREMicrosoftWindowsCurrentVersionUninstall");
    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");

免责声明:文章转载自《C# Lodop实现打印》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇长连接 、短连接、心跳机制与断线重连sql server 获取上周几和本周几下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mui 上传图片

mui前端传输文件 //上传图片 document.getElementById('photo').addEventListener('tap', function(e) { if (mui.os.plus) { var buttonTit = [{...

Java多线程中static变量的使用

线程,是我们项目中绕不过的重点领域。提到线程,就常会听到线程安全的术语。那什么是线程安全呢?通俗点说,就是线程访问时不产生资源冲突。其实,这是一个有点难以定义的概念,不是很容易让人一听就懂的概念。“一个类可以被多个线程安全调用就是线程安全的”《Java并发编程实践》。     来说说静态变量、实例变量、局部变量在多线程下的安全问题吧!     (一)静态变...

vue+element-ui el-table表格(含表头)内容溢出省略,鼠标悬浮提示

第一种:参考:https://my.oschina.net/u/3455362/blog/4674804 <template> <div class="test"> <el-table :data="gridData" border stripe style=" 100%"> &...

Shell 脚本常用命令

Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook。在工作过程中整理了一下,贴在这里已备查看。 1 Shell中的特殊符号 1.1 $ 美元符号。用来表示变量的值。如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。 1.2 # 井号。除了做为超级用户的提示符之外,还可以在脚...

[JAVA] 运行 java HelloWorld 命令,提示“错误: 找不到或无法加载主类

肯定是哪里出了问题,需要检查命令、系统环境变量配置、代码三个方面: 命令 java运行需要先使用“javac HelloWorld.java”命令对java文件进行编译,编译会自动生成一个同名的以“.class”为后缀的类文件放在同一目录,然后再执行“java HelloWorld”来运行。(注意:此处运行“java”命令,java后只能跟文件名,不需要任...

Android 自定义CheckBox 样式

新建Android XML文件,类型选Drawable,根结点选selector,在这定义具体的样式。 <?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">...