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");
C# Lodop实现打印的更多相关文章
- Lodop调整打印项输出顺序 覆盖与层级
Lodop中的打印项,如果有输出在同一位置,或部分位置重叠的地方,打印项之间是怎么覆盖的呢?在JS里,按照Lodop语句打印项先后的执行顺序,先执行的先输出,后执行的后输出,如果有后面的打印项和前面的 ...
- asp.net lodop单个打印
1.首先在列表页面增加以下代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&quo ...
- Lodop Web打印插件使用
<object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" st ...
- LODOP获取打印成功,是否加入队列
之前博文介绍过获取打印机状态码 LODOP获取打印机状态码和状态码含义测试,但是打印机种类千差万别,状态码不一定准确,特别是打印成功的状态码,获取任务不在队列,可以判断打印成功,删除任务也是任务不在队 ...
- LODOP设置打印设计返回JS代码是变量
前面有一篇博文是介绍JS模版的加载和赋值,赋值有两种,详细可查看本博客的那篇博文:LodopJS代码模版的加载和赋值简单来说,就是打印项的值是变量,在添加打印项前进行赋值:打印项的值是字符串,给打印项 ...
- LODOP批量打印多页模版进行维护
批量打印的时候,可以循环多任务,也可以循环多页,很多的时候也可以分页分任务,分组打印.如果是一个任务里的多页相同的模版,一个任务中会有很多打印项,这些打印项在每页中的位置是相同的,如果要调整,调整结果 ...
- LODOP 获取打印设计代码不带INIT初始化语句
前面的博文生成JS代码模版和文档式模版,生成的是带初始化语句的模版,如果想要打印多个,可以循环多个任务,什么是一个任务,可查看本博客相关博文:Lodop打印语句最基本结构介绍(什么是一个任务)一个任务 ...
- Lodop如何打印直线
Lodop打印设计提供了可视化设计,生成代码的方便,在打印设计界面上,选择添加打印项的时候,可以看到没有添加直线选项,可添加斜线,然后把添加的斜线调整成直线:线宽=高 -----水平直线线宽=宽--- ...
- Lodop设置打印维护返回打印语句代码
打印设计关闭时,可以返回设计的打印代码,打印维护则返回成功打印的次数.不过打印维护也是返回打印程序代码的,方法就是加个语句,这个语句是: LODOP.SET_PRINT_MODE("PRIN ...
随机推荐
- epoll函数与参数总结学习 & errno的线程安全
select/poll被监视的文件描述符数目非常大时要O(n)效率很低:epoll与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以 ...
- hdu 5713(状态压缩DP)
要进行两次dp, 第一个,dp[i],1<=i<=(1<<n) 其中用i的二进制形式表示已选择的点. dp[i] 用来保存i中的点构成一个连通块,边集多少种可能. 转移方程: ...
- HBase 的存储结构
HBase 的存储结构 2016-10-17 杜亦舒 HBase 中的表常常是超级大表,这么大的表,在 HBase 中是如何存储的呢?HBase 会对表按行进行切分,划分为多个区域块儿,每个块儿名为 ...
- 检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
/** * Author: laixiangran. * Created by laixiangran on 2015/12/02. * 检测访问网页的浏览器呈现引擎.平台.Windows操作系统.移 ...
- 为什么删不掉date模块
显示是field pending deletion一看report里面的field list并没有xxx_date_xxx,只好跑到数据库才看到一个field_date_test当时并没有把这个字段当 ...
- 主成分分析(PCA)原理及R语言实现
原理: 主成分分析 - stanford 主成分分析法 - 智库 主成分分析(Principal Component Analysis)原理 主成分分析及R语言案例 - 文库 主成分分析法的原理应用及 ...
- 《云中歌》孟石头泡妞大法独家放送,单身汪get起来!!
谁说古代文人雅士只会诗词歌赋.琴棋书画?作为“玉中之王”的公子哥——孟石头泡妞可是个中高手,总结起来都能出一本“泡妞宝典”了,单身的乃们还不赶紧学起来! 第一步:假装自来熟相识,马上开启约会模式 看到 ...
- java 多线程3(线程安全)
需求:模拟三个窗口同时买票. 问题1:static 修饰num,只创建一份在内存中,要不就会创建3份. 问题2:线程安全问题.(代码重1的红色字体) 出现的原因:存在两个或两个以上的线程对象,而且线程 ...
- object-c NSString 转成特定编码格式如utf8、gbk等
有两种方式 第一种是先转换成特定编码格式NSDATA 第二种是先转换成特定编码格式char *(cString) 转成gbk: 第一种: - (NSString *) utf82gbk:(NSStri ...
- linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2
命令名称:gzip功能:压缩文件命令所在路径:/bin/gzip用法:gzip 文件压缩后文件格式:.gz其他:压缩后不保留原文件:只能压缩文件,不能压缩目录 命令名称:gunzip功能:解压.gz格 ...