• 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>
    复制代码
  • 相关阅读:
    依赖注入及AOP简述(二)——工厂和ServiceLocator .
    依赖注入及AOP简述(一)——“依赖”的概念 .
    Java程序员应该知道的10个面向对象理论
    IOC原理分析
    android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
    Android长方形图片生成正圆形,以及矩形图片生成圆角
    MATLAB新手教程
    BitNami一键安装Redmine
    VB6.0数据库开发五个实例——罗列的总结
    java绘图板
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3413973.html
Copyright © 2020-2023  润新知