zoukankan      html  css  js  c++  java
  • 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>
    复制代码
  • 相关阅读:
    1014 Waiting in Line (30)(30 point(s))
    1013 Battle Over Cities (25)(25 point(s))
    1012 The Best Rank (25)(25 point(s))
    1011 World Cup Betting (20)(20 point(s))
    1010 Radix (25)(25 point(s))
    1009 Product of Polynomials (25)(25 point(s))
    1008 Elevator (20)(20 point(s))
    1007 Maximum Subsequence Sum (25)(25 point(s))
    1006 Sign In and Sign Out (25)(25 point(s))
    1005 Spell It Right (20)(20 point(s))
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3413973.html
Copyright © 2011-2022 走看看