winform 按顺序连续打印多个PDF文件

原文: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);
}

至此 大功告成

winform 按顺序连续打印多个PDF文件,布布扣,bubuko.com

时间: 2024-10-12 14:16:13

winform 按顺序连续打印多个PDF文件的相关文章

如何通过WPS 2013 API 将Office(Word、Excel和PPT)文件转PDF文件

1. 描述 PDF 文件是一种便携文件格式,是由Adobe公司所开发的独特的跨平台文件格式.PDF文件以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每一个字符.颜色以及图象.可移植文档格式,也称为"便携文档格式",是一种电子文件格式.这种文件格式与操作系统平台无关,也就是说,PDF文件不管是在Windows,Unix还是在苹果公司的Mac OS操作系统中都是通用的.这一特点使它成为在Internet上进行电子文

使用ITextSharp生成PDF文件心得

最近公司在做一个项目,需要把数据导出成PDF格式的文件,然后再网上搜了一下发现开源的组件还挺多的,用的比较多的就是itextsharp,itextsharp由java的itext演变而来,并且提供的丰富的功能,能够制作表格.插入图片等,这是官网的下载地址:http://sourceforge.net/projects/itextsharp/,下面就来简单介绍一下使用itextsharp的心得. 首先创建一个winform应用程序,并且添加itextsharp的引用,在按钮的单击事件写上生成pdf

迅捷PDF编辑器调整PDF文件页面图文教程

大多数人进行需要对PDF文件进行编辑,在编辑文档的过程中,我们可能会需要重新调整PDF文档的页面顺序. 重新编辑文档无疑会浪费很多时间,借助迅捷PDF编辑器即可轻松对PDF文档页面进行调整. 一.下载安装迅捷PDF编辑器,双击运行软件. 二.点击"文件--打开",添加需要编辑的PDF文档. 三.点击软件菜单栏"视图",在下拉菜单中,点击"页面缩略图". 四.在软件左侧即可查看到PDF文档的所有页面,点击需要调整的页面,将其拖动到所需的位置即可.

怎样将多个PDF文件合并

工作或是学习中经过日积月累的文档处理编辑会生成很多文档,在整理文档的时候就会需要将一些相关文档进行合并,整理到一起.常见的办公文档我们都会处理,但是对PDF这种不好编辑的文件有很多人就不会处理了.怎样合并多个PDF文件,其实也是有很多方法的. 方法A:①一些处理PDF文件的工具中就带有合并PDF的选项,打开工具后,找到里面PDF合并选项并点击选择.②接着是将需要合并的PDF文件都添加到工具中,可以点添加文件按钮进行添加,或者是直接将文件拖拽到软件中.一般最后是用拖拽的方式,将需要合并的文件按照顺

pdfBox 读取pdf文件

1.引入maven依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.4</version> </dependency> 2.相关工具类:PdfParser.java package com.insurance.tool; import java.io.File; im

如何在PDF中插入另一个PDF文件的页面

编辑PDF文件的时候,如果要在当前文档中插入另一个PDF文件可分为俩种情况,一是插入另一个PDF中的较少部分页面.另外就是插入较多或者是整个文件了.对于这两种情况可以采用不同的方法来操作. 插入另一个PDF文件中较少页面: 首先用迅捷PDF编辑器同时打开两个PDF文件(文件1和文件2),并在"视图"菜单中打开页面缩略图,在缩略图窗格中可以很好的观察文档的总体结构,也方便对文件页面的操作. 在文件2中的缩略图窗格中找到要需要的页面,右击选择复制.接着切换到文件1,在要插入的页面右击选择粘

怎样将图片整理转换成一个pdf文件

有时候为了方便查看管理扫描形成的图片,会将这些图片放到一起,合成一个文档,将图片放到pdf中对图片的质量都不会有任何影响,所以一般都是将图片转为PDF格式文件,那么图片如何转PDF呢? 在将图片转成PDF文档之前需要整理图片,将需要的图片都放到一个文件夹中,如果图片是无序的,那么就安照顺序给图片命名标记一下. 将图片转PDF,比较常见的有两种方法,一种是通过工具直接进行转换,另一种则是通过word先编辑好,再转为PDF文件. 用工具转换需要安装对应的转换工具,之后打开,选择图片转PDf.选择转换

C#的Process类调用第三方插件实现PDF文件转SWF文件

在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来就会做一个简单的介绍. 在.NET平台中,对C#提供了一个操作对本地和远程的访问进程,使能够启动和停止系统进程.这个类就是System.Diagnostics.Process,我们首先来了解一下该类. 一.解析System.Diagnostics.Process类 在C#中使用Process类可以提

怎样把扫描的图片做成PDF文件

扫描一些文档文件后会形成很多图片,图片太多在保存后也不便于管理,所以一般会将这些图片转换成一个pdf格式的文档.那怎么把扫描的图片转成pdf文件呢? 如果图片是按照顺序命名的,就不用进行整理了,如果扫描的图片没有按顺序进行命名那首先要做的就是整理这些图片,按顺序为图片命名.然后将需要转为一个pdf文件的图片都放在同一个文件夹中. 比较直接的方法,使用转换工具直接将图片合成一个pdf文件. 先打开转换工具,选择“图片转PDF”. 点添加文件或者添加文件夹,将整理好的图片按顺序放到转换工具的空白列表