try { var mergeFilePath = string.Format("{0}mergepdf.pdf", tempDownDir); PDFPrintHelper.MergePDFFile(pdfList, mergeFi
winform 按顺序连续打印多个PDF文件
关于PDF打印的问题,前面有篇文章(点这里查看)也叙述过,今天来谈谈另外一种方法
其实方法很简单,因为需要把多个PDF文档按顺序连续打印,为此我们为什么不把要打印的pdf文档按顺序合并成一个PDF打印呢?如此就简单多了哦。
这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找
开始正文
1、为了方便,打印方法就不另寻他路了,和前面一致,具体如下:
Process proc = new Process();
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = itemPath;//打印文件路径(本地完整路径包括文件名和后缀名)
proc.StartInfo.Verb = "print";
proc.Start();
proc.Close();
2、就是重点了,合并PDF文档,方法很简单,网上一搜一大把,因为我的需求需要把jpg图片和pdf一起打印,因此合并方法中包含图片
使用此方法需要第三方控件iTextSharp.dll(点击这里下载)
/// <summary>
/// 把多个PDF文件和JPG/PNG图合并成一个PDF文档
/// </summary>
/// <param name="fileList">需要合并文件的完整路径列表</param>
/// <param name="outMergeFile">输出文件完整路径</param>
public static void MergePDFFile(List<string> fileList, string outMergeFile)
{
PdfReader reader;
Document document = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outMergeFile, FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage newPage;
foreach (var itemFile in fileList)
{
if (!File.Exists(itemFile))
{
string fileName = Path.GetFileName(itemFile);
LogMessageWrite.WriteMessage(string.Format("文件打印合并__{0} 文件不存在", fileName));
continue;
}
FileInfo fInfo = new FileInfo(itemFile);
if (fInfo.Length < 1)
{
string fileName = Path.GetFileName(itemFile);
LogMessageWrite.WriteMessage(string.Format("文件打印合并__文件内容为空,无法打印,{0}", fileName));
return;
} var ext = Path.GetExtension(itemFile).ToLower();
if (".pdf".Equals(ext))
{
reader = new PdfReader(itemFile);
int iPageNum = reader.NumberOfPages;
for (int j = 1; j <= iPageNum; j++)
{
document.NewPage();
newPage = writer.GetImportedPage(reader, j);
cb.AddTemplate(newPage, 0, 0);
}
}
else if (".jpg".Equals(ext) || ".jpge".Equals(ext) || ".png".Equals(ext))
{
FileStream rf = new FileStream(itemFile, FileMode.Open, FileAccess.Read);
int size = (int)rf.Length;
byte[] imext = new byte[size];
rf.Read(imext, 0, size);
rf.Close();
Image img = Image.GetInstance(imext);
//调整图片大小,使之适合A4
var imgHeight = img.Height;
var imgWidth = img.Width;
if (img.Height > iTextSharp.text.PageSize.A4.Height)
{
imgHeight = iTextSharp.text.PageSize.A4.Height;
}
if (img.Width > iTextSharp.text.PageSize.A4.Width)
{
imgWidth = iTextSharp.text.PageSize.A4.Width;
}
img.ScaleToFit(imgWidth, imgHeight);
//调整图片位置,使之居中
img.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
document.NewPage();
document.Add(img);
}
}
document.Close();
}
3、打印合并后的文件
try
{
var mergeFilePath = string.Format("{0}mergepdf.pdf", tempDownDir);
PDFPrintHelper.MergePDFFile(pdfList, mergeFilePath);
Process proc = new Process();
proc.StartInfo.CreateNoWindow = false;
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.FileName = mergeFilePath;//打印文件路径(本地完整路径包括文件名和后缀名)
proc.StartInfo.Verb = "print";
proc.Start();
proc.Close();
}
catch (Exception ex)
{
LogMessageWrite.WriteMessage(ex.Message);
}
至此 大功告成
一、CSS兼容代码
|
1
2
3
4
5
6
|
.transparent { filter:alpha(opacity=50); /* IE */ -moz-opacity:0.5; /* FireFox old version*/ -khtml-opacity: 0.5; /* Sarfari old version */ opacity: 0.5; /* FireFox */} |
二、Javascript兼容代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
if (!window.jasen.core.Util) { window.jasen.core.Util = {}; } var $ = function (id) { return document.getElementById(id); } function style(element, key, value) { if (typeof element == "string") { element = $(element); } if (value) { element.style[key] = value; } else { return element.style[key]; } }; function opacity(element, /*0-100*/opacityValue) { var opacityValue = parseInt(opacityValue); style(element, "filter", "alpha(opacity=" + opacityValue + ")"); opacityValue /= 100.0; style(element, "MozOpacity", opacityValue); style(element, "KhtmlOpacity", opacityValue); style(element, "opacity", opacityValue); }; var Util = window.Util = window.jasen.core.Util; Util.opacity = opacity; Util.style = style; |
三、范例

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
#content
{
width:300px;
margin:20px auto;
}
</style>
<script src="Scripts/jasen.Core.Util.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function () {
var seletor = document.getElementById("opacitySeletor");
seletor.options.add(new Option("--请选择--", "100")); for (var i = 0; i <= 100; i++) {
seletor.options.add(new Option(i, i));
} seletor.onmousewheel = function (event) {
event = event || window.event;
var currentIndex = seletor.selectedIndex - event.wheelDelta / 120; if (currentIndex < 0) {
seletor.selectedIndex = seletor.options.length - 1;
}
else if (currentIndex > seletor.options.length - 1) {
seletor.selectedIndex = 0;
}
else {
seletor.selectedIndex = currentIndex;
} seletor.onchange();
return false;
}
} function changeOpacity() {
var element = document.getElementById("opacitySeletor"); if (element.selectedIndex < 0) {
return;
} var opacityValue = element[element.selectedIndex].value; if (opacityValue != "") {
Util.opacity("opacityImg", opacityValue);
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="content">
<select id="opacitySeletor" onchange="return changeOpacity();"></select>
<img id = "opacityImg" src="Images/car.jpg" title="car opacity" alt="car opacity" />
</div>
</div>
</form>
</body>
</html>

try { var mergeFilePath = string.Format("{0}mergepdf.pdf", tempDownDir); PDFPrintHelper.MergePDFFile(pdfList, mergeFi的更多相关文章
- 工作总结 @{var sas = String.Format("{0:yyyy-MM-dd}", Model.DemandTime.GetValueOrDefault());}
可空DateTime类型 无法Tostring 或者 格式化时间格式 需要转换 为DateTime Nullable<T>.GetValueOrDefault() 方法 返回对应的 ...
- 这种写法用过没:string.Format("{0,-10}", 8)
1 2 3 4 var s1 = string.Format("{0,-10}", 8); var s2 = string.Format("{0,10}", 8 ...
- String.format("%0"+length+"d", arr)中的%0和"d"分别代表什么
public static void main(String[] args) { int a = 8; String s = String.format("%04d", a); S ...
- C# string.Format("{0:C3}", 2)
- C# String.Format的格式限定符与Format方法将多个对象格式化一个字符串原理
Format方法将多个对象格式化成一个字符串Format方法解析格式字符串的原理: (1).格式字符串中的{0}会被替换成格式字符串之后的第一个参数,以此类推 (2).Format方法解析格式字符串时 ...
- C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}等等
int a = 12345678; //格式为sring输出// Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); / ...
- C# String.Format大全 去 decimal 后面的 0
转 http://kwon.iteye.com/blog/1068255 http://blog.csdn.net/tvvbbb/article/details/47256943 public st ...
- String.Format数字格式化输出 {0:N2} {0:D2} {0:C2
//格式为sring输出 // Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); // Label2.Text = ...
- 【转】C# String.Format数字格式化输出各种转换{0:N2} {0:D2} {0:C2}...
; //格式为sring输出 // Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); // Label2.Text = & ...
随机推荐
- HttpClient模拟客户端请求实例
HttpClient Get请求: /// <summary> /// Get请求模拟 /// </summary> /// < ...
- 找呀志_使用SQLiteDatabase增删改提供的搜索方法和事务
知识具体解释:http://blog.csdn.net/zhaoyazhi2129/article/details/9026093 MainActivity.java,User.java,BaseDa ...
- oracle_利用闪回功能恢复数据
方便起见一般:执行如下即可不用往下看: ① 启用行移动功能 alter table tbl_a enable row movement; ② 闪回表数据到某个时间点 flashback table t ...
- C++ 对象模型具体评论(特别easy理解力)
c++对象模型系列 转 一.指针与引用 一 概括 指针和引用,在C++的软件开发中非经常见,假设能恰当的使用它们可以极大的提 高整个软件的效率,可是非常多的C++学习者对它们的各种使用情况并非都了解, ...
- 【IOS】 遍历info 所有内容 && 唯一的节能设备UUID
/**获取装置imie*/ std::string DeviceInfo::getIMIE() { #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) NSStri ...
- 如何快速正确的安装 Ruby, Rails 运行环境
如何快速正确的安装 Ruby, Rails 运行环境 https://ruby-china.org/wiki/install_ruby_guide 对于新入门的开发者,如何安装 Ruby, Ruby ...
- sql server 视图 的一个例子
这是一个 有点复杂的查询.我现在 想把他封装 成 视图 其中 B.RecordID= 41 提供给 视图外查询. create view view_UserRecord as select Rec ...
- 工作流Jpbm4.4工作流知识点总结(工作流开发宝典)
原文:工作流Jpbm4.4工作流知识点总结(工作流开发宝典) Jbpm工作流开发过程中的一些知识点总结,方便以后开发使用! 目录: 一.工作流框架的搭建 二.工作流框架的流程开发 1.管理流程定义 ① ...
- Cocos2D-X2.2.3学习笔记3(内存管理)
本章节介绍例如以下: 1.C/C++内存管理机制 2.引用计数机制 3.自己主动释放机制 1.C/C++内存管理机制 相信仅仅要懂oop的都知道NEW这个keyword吧,这个通俗点说事实上就是创建对 ...
- Linux 查看和删除进程
1. 在 LINUX 命令平台输入 1-2 个字符后按 Tab 键会自动补全后面的部分(前提是要有这个东西,例如在装了 tomcat 的前提下, 输入 tomcat 的 to 按 tab).2. ps ...