try { var mergeFilePath = string.Format("{0}mergepdf.pdf", tempDownDir); PDFPrintHelper.MergePDFFile(pdfList, mergeFi

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

 

关于PDF打印的问题,前面有篇文章(点这里查看)也叙述过,今天来谈谈另外一种方法

其实方法很简单,因为需要把多个PDF文档按顺序连续打印,为此我们为什么不把要打印的pdf文档按顺序合并成一个PDF打印呢?如此就简单多了哦。

这里文章写出来并不是为了炫耀什么,只是觉得发现些好东西就分享出来而已,同时也做个记录,方便以后查找

开始正文

1、为了方便,打印方法就不另寻他路了,和前面一致,具体如下:

  View Code

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(点击这里下载)

  View Code

/// <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、打印合并后的文件

  View Code

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>
复制代码

 

你可能感兴趣的:(string.Format)