精华内容
下载资源
问答
  • C# 打印PDF文档的10种方法
    千次阅读
    2019-04-24 00:21:00

    操作PDF文档时,打印是常见的需求之一。针对不同的打印需求,可分多种情况来进行,如设置静默打印、指定打印页码范围和打印纸张大小、双面打印、黑白打印等等。经过测试,下面将对常见的几种PDF打印需求做一些归纳总结,这里归纳了10种打印需求及方法。如下:

    1. 使用默认打印机打印PDF文档
    2. 使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档
    3. 指定打印机及PDF文档打印页码范围
    4. 静默打印PDF文档
    5. 双面打印PDF文档
    6. 黑白打印PDF文档
    7. 打印PDF文档时选择不同的出纸盒
    8. 将PDF文档打印多份
    9. 打印PDF一页为多页、打印多页为一页
    10. 自定义纸张大小打印PDF

    使用工具:Spire.PDF for .NET

    获取方法:

    1. 通过官网下载。在程序中添加引用Spire.Pdf.dll,dll文件在安装路径下的bin文件夹中。

    2. 通过Nuget网站下载。

    C# 示例代码

    【示例1】使用默认打印机打印PDF

    //创建PdfDocument类的对象,并加载PDF文档
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("Test.pdf");
    
    //使用默认打印机打印文档所有页面
    doc.Print();
    

    【示例2】使用虚拟打印机(Microsoft XPS Document Writer)打印PDF

    //加载PDF文档
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("Test.pdf");
    
    //选择Microsoft XPS Document Writer打印机
    doc.PrintSettings.PrinterName = "Microsoft XPS Document Writer";
    
    //打印PDF文档到XPS格式
    doc.PrintSettings.PrintToFile("PrintToXps.xps");
    doc.Print();
    

    【示例3】指定打印机及PDF文档打印页码范围

    //加载PDF文档
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("Test.pdf");
    
    //指定打印机
    doc.PrintSettings.PrinterName = "HP LaserJet P1007";
    
    //设置文档打印页码范围
    doc.PrintSettings.SelectPageRange(1, 5);
    
    //打印不连续的页面
    //doc.PrintSettings.SelectSomePages(new int[] { 1, 3, 5, 7 });
    
    //打印PDF文档
    doc.Print();
    

    【示例4】静默打印PDF

    //加载PDF文档
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("Test.pdf");
    
    //静默打印PDF文档
    doc.PrintSettings.PrintController = new StandardPrintController();
    doc.Print();
    

    【示例5】双面打印PDF

    //加载PDF文档
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("Test.pdf");
    
    //判断打印机是否支持双面打印
    if (doc.PrintSettings.CanDuplex)
    {
        //如果支持则设置双面打印模式,可选:Default/Simplex/Horizontal/Vertical
        doc.PrintSettings.Duplex = Duplex.Default;
        //打印PDF文档
        doc.Print();
    }
    

    【示例6】黑白打印PDF

    //加载PDF文档
    PdfDocument pdf = new PdfDocument();
    pdf.LoadFromFile("Test.pdf");
    
    //黑白打印PDF文档
    pdf.PrintSettings.Color = false;
    pdf.Print();
    

    【示例7】打印PDF文档时选择不同的出纸盒

    //加载PDF文档
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("Test.pdf");
    
    //设置纸盒
    doc.PrintSettings.PaperSettings += delegate(object sender, PdfPaperSettingsEventArgs e)
    {
        //设置页面1-50的纸张来源为纸盒1
        if (1 <= e.CurrentPaper && e.CurrentPaper <= 50)
        {
            e.CurrentPaperSource = e.PaperSources[0];
        }
        //设置余下页面的纸张来源为纸盒2
        else
        {
            e.CurrentPaperSource = e.PaperSources[1];
        }
    };
    
    //打印PDF文档
    doc.Print();
    

    【示例8】将PDF文档打印多份

    //加载PDF文档
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile("Test.pdf");
    
    //设置打印份数为2份
    doc.PrintSettings.Copies = 2;
    
    //打印PDF文档
    doc.Print();
    

    【示例9】打印PDF一页为多页,多页为一页

    \1. 调用PdfPrintSettings类的SelectMultiPageLayout方法将一个PDF文档的多张页面打印到一张纸上。

    //实例化一个PdfDocument对象
    PdfDocument pdf = new PdfDocument();
    //载入PDF文档
    pdf.LoadFromFile("Input.pdf");
    
    //将PDF文档的每两张页面打印到一张纸上(排版格式为1行,2列)
    pdf.PrintSettings.SelectMultiPageLayout(1, 2);
    pdf.Print()
    

    \2. PdfPrintSettings类的SelectSplitPageLayout方法支持将一个PDF文档的单张页面打印到多张纸上。该方法是根据A4纸的标准尺寸595pt*842pt对PDF页面进行拆分,超过该大小的页面,打印时其超过部分将会被打印到下一张纸。

    //实例化一个PdfDocument对象
    PdfDocument pdf = new PdfDocument();
    //载入PDF文档
    pdf.LoadFromFile("Input1.pdf");
    
    //将PDF文档的单张页面根据标准页面大小进行拆分并打印
    pdf.PrintSettings.SelectSplitPageLayout();
    pdf.Print()
    

    【示例10】自定义纸张大小打印PDF

    \1. 使用虚拟打印机自定义纸张大小打印:保持原来页面大小打印到PDF

    //加载需要打印的PDF文档
    Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument();
    doc.LoadFromFile(FileName);
    
    //获取原文档第一页的纸张大小,这里的单位是Point
    SizeF size = doc.Pages[0].Size;
    
    //实例化PaperSize对象,设置其宽高
    //需要特别注意的是这里涉及到单位的转换,PaperSize的宽高参数默认单位是百英寸 
    PaperSize paper = new PaperSize("Custom", (int)size.Width/72*100, (int)size.Height/72*100);
    paper.RawKind = (int)PaperKind.Custom;
    
    //设置打印的纸张大小为原来文档的大小
    doc.PrintSettings.PaperSize = paper;
    
    //需要选择FitSize打印模式
    doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, true);
    //打印
    doc.Print();
    

    \2. 使用真实打印机设置纸盒中的纸张大小打印:将原来A4的文档打印成A3的大小。

    //加载需要打印的PDF文档
     Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument();
     doc.LoadFromFile(FileName);
    
     PaperSize p = null;
     //实例化一个PrintDocument对象来获取当前打印机的纸盒信息
     PrintDocument printDoc = new PrintDocument();
    
     //遍历打印机纸盒里面的纸张,找到需要的A3
    foreach (PaperSize ps in printDoc.PrinterSettings.PaperSizes)
                {
                    if (ps.PaperName.Equals("A3"))
                    {
                        p = ps;
                        break;
                    }
                   
                }
    
     //设置打印的纸张大小为A3
     doc.PrintSettings.PaperSize = p;
    
     //打印
     doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, true);
     doc.Print();
    

    https://www.cnblogs.com/Yesi/p/10755996.html

    4624570-7ad1442474a63a1f.gif
    好书推荐、视频分享,与您一起进步
    更多相关内容
  • C#实现打印PDF文件

    热门讨论 2016-04-20 19:42:52
    C#多种方法实现打印PDF文件,可以指定打印机
  • C#拆分PDF(iText)

    2019-10-15 10:01:38
    按照exce制定的规则,将一个PDF拆分成多个并进行重命名。
  • 安装Ghostscript,GhostView,使用gsprint命令打印pdf文件。 gsprint命令参数说明: "-dQUIET", 安静的意思,指代执行过程中尽可能少的输出日志等信息。(也可以简写为“-q”) "-dNOSAFER", 通过命令行运行 "-...

    有一批PDF文件,好几百个,每个只打印第2,3页,双面打印。

    网上搜索一波,方案如下:

    安装Ghostscript,GhostView,使用gsprint命令打印pdf文件。

    gsprint命令参数说明:

         "-dQUIET",    安静的意思,指代执行过程中尽可能少的输出日志等信息。(也可以简写为“-q”)
         "-dNOSAFER",    通过命令行运行
         "-dBATCH",    执行到最后一页后退出
         "-dNOPAUSE",    每一页转换之间没有停顿
         "-dNOPROMPT",    没有相关提示
         "-dFirstPage=1",    从第几页开始
         "-dLastPage=5",     到第几页结束
         "-sDEVICE=pngalpha",    转换输出的文件类型装置,默认值为x11alpha
         "-g720x1280",    图片像素(-g<width>x<height>),一般不指定,使用默认输出
         "-r300",    图片分辨率(即图片解析度为300dpi),默认值好像是72(未测试证实)
         "-sOutputFile=/opt/shanhy/error1png/%d.png",    图片输出路径,使用%d或%ld输出页数
     

    比如打印c.pdf第2,3页,命令如下

    1

    gsprint -dFirstPage=2 -dLastPage=3 c.pdf

    大部分pdf只打印第2,第3页,双面打印,所以用python控制批量打印所有pdf的第二页,暂停,提示翻页,然后批量打印第三页。

    完整代码如下

    # -*- coding: utf-8 -*-
    import os
    import time
    
    def print_pdf(pdf_file_name, page):
        """
            静默打印pdf
            :param pdf_file_name
            :page  打印第几页
            :return:
            """
        cmd = 'gsprint -dFirstPage=%s -dLastPage=%s %s' % (page, page, pdf_file_name)
        print(cmd)
        p = os.popen(cmd)
        time.sleep(3)
        print(p.read())
        
    if __name__ == '__main__':
        curr_path = os.getcwd()
        fl = os.listdir(curr_path)
        for i in range(2,4):
            print(i)
            for f in fl:
                if 'pdf' in f.lower():
                    print_pdf(f, i)
            a = raw_input('请翻转打印纸')

    ghostscript下载地址:

    https://www.ghostscript.com/download.html

    ghostview下载地址:

    http://www.onlinedown.net/soft/6218.htm

    python 批量打印PDF - onelang - 博客园

    展开全文
  • C# 八种方案打印PDF文档

    万次阅读 2017-11-02 21:20:12
    打印PDF文档是开发人员经久不变的话题,常见的打印需求大致有以下八种: 用默认打印机打印PDF文档 用虚拟打印机打印PDF文档 指定打印机及PDF文档的打印页码范围 静默打印PDF文档 双面打印PDF文档 打印PDF文档的多页...

    C# 八种方案打印PDF文档

    打印PDF文档是开发人员经久不变的话题,常见的打印需求大致有以下八种:

    • 用默认打印机打印PDF文档
    • 用虚拟打印机打印PDF文档
    • 指定打印机及PDF文档的打印页码范围
    • 静默打印PDF文档
    • 双面打印PDF文档
    • 打印PDF文档的多页到一页
    • 打印PDF文档的一页到多页
    • 将PDF文档打印多份

    本文将介绍如何使用C#实现以上所列出的打印功能。该方案使用了Spire.PDF for .NET控件,该控件主要用于在.NET应用程序中操作PDF文档。下载安装后,需要引用Spire.Pdf.dll到Visual Studio中,本文将介绍如何该控件来实现以上所列出的打印功能。


    常见的八种打印需求及解决方案

    1. 使用默认打印机打印PDF文档

    使用PdfDocument对象调用Print方法可直接使用默认打印机打印一个PDF文档的所有页面。

    PdfDocument pdf = new PdfDocument("Input.pdf");
    pdf.Print(); 


    2. 使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档

    PdfPrintSettings类的PrinterName属性可以指定打印机的名称,PrintToFile方法可以将PDF文档打印为XPS格式。

    PdfDocument pdf = new PdfDocument("Input.pdf");
    
    pdf.PrintSettings.PrinterName = "Microsoft XPS Document Writer";
    pdf.PrintSettings.PrintToFile("PrintToXps.xps");
    
    pdf.Print();
     

    3. 指定打印机及打印页码范围

    如果需要打印PDF文档的指定页面,如打印第二页和第四页,则可以调用SelectSomePages方法。如果需要打印一个范围内的页面,则可以使用SelectPageRange方法。

    PdfDocument pdf = new PdfDocument("Test.pdf");
    //Set the printer
    pdf.PrintSettings.PrinterName = "HP LasterJet P1007";
     
    //Only print the second and fourth page
    pdf.PrintSettings.SelectSomePages(new int[] { 2, 4 });
     
    //Print the pages from 1 to 15
    pdf.PrintSettings.SelectPageRange(1, 15);
     
    pdf.Print();

     

    4. 静默打印PDF文档

    PdfDocument pdf = new PdfDocument("Input.pdf");
    pdf.PrintSettings.PrintController = new StandardPrintController();
    pdf.Print();
     

    5. 双面打印PDF文档

    PdfDocument pdf = new PdfDocument("Input.pdf");
    bool isDuplex = pdf.PrintSettings.CanDuplex;
    if (isDuplex)
    {
        //如果支持则设置双面打印模式,可选:Default/Simplex/Horizontal/Vertical
        pdf.PrintSettings.Duplex= Duplex.Default;
        //打印文档
        pdf.Print();
    }
     

    6. 打印多页到一页

    用户可以调用PdfPrintSettings类的SelectMultiPageLayout方法将一个PDF文档的多张页面打印到一张纸上。 

    //实例化一个PdfDocument对象
    PdfDocument pdf = new PdfDocument();
    //载入PDF文档
    pdf.LoadFromFile("Input.pdf");
     
    //将PDF文档的每两张页面打印到一张纸上(排版格式为1行,2列)
    pdf.PrintSettings.SelectMultiPageLayout(1, 2);
    pdf.Print();

    以下是用于打印的PDF文档截图,该文档共有2页:

     

    打印到 XPS的效果:

     

    7. 打印一页到多页

    PdfPrintSettings类的SelectSplitPageLayout方法支持将一个PDF文档的单张页面打印到多张纸上。该方法是根据A4纸的标准尺寸595pt*842pt对PDF页面进行拆分,超过该大小的页面,打印时其超过部分将会被打印到下一张纸。

    //实例化一个PdfDocument对象
    PdfDocument pdf = new PdfDocument();
    //载入PDF文档
    pdf.LoadFromFile("Input1.pdf");
     
    //将PDF文档的单张页面根据标准页面大小进行拆分并打印
    pdf.PrintSettings.SelectSplitPageLayout();
    pdf.Print();

    以下是用于打印的PDF文档截图,该PDF文档共有1页,页面大小为1600pt*750pt:


    打印到XPS的效果:

     

    8. 将文档打印多份

    PdfDocument pdf = new PdfDocument("Input.pdf");
    pdf.PrintSettings.Copies = 2;
    pdf.Print();


     

    展开全文
  • 合同在系统(web系统)中以html形式显示,打印单份都是在网页中右键打印,订单量上千份,每笔订单有两份合同,如果手动打印的话,需要打印2000+次,因为还要按月份进行整理,还要页码,所以先要保存成PDF(因为有电子...

    题记:因为老板要求将过去一年内系统中的订单合同内容进行打印,并按月进行整理成纸质文件。合同在系统(web系统)中以html形式显示,打印单份都是在网页中右键打印,订单量上千份,每笔订单有两份合同,如果手动打印的话,需要打印2000+次,因为还要按月份进行整理,还要页码,所以先要保存成PDF(因为有电子印章和CSS样式,没法直接保存成Word),还要插入页码。

    第一步,用pechkin将网页保存为PDF

    合同1的文件名为351.pdf,合同2的文件名为352.pdf

    将所有ID的合同到下载到同一目录中。

    用的是C#写的脚本,大概用了半个小时所有的PDF下载完成(要是手动的话,按一笔订单两份合同1分钟计算的话,1天480份,大概得两天多吧,还是不带休息的那种。。)。

    下面是主要的代码

    3a3f8839b8dd0cab945ae5a208f09de5.png

    第二步,将PDF按照月份进行合并成一个大的PDF,并生成页码。

    PDF有了,用PDF编辑器进行合并和生成页码,一看,所有的PDF编辑软件合并,生成页码居然都是收费的(费用不高,老板不愿出,我也不愿出,如果有用付费的PDF编辑器的朋友,也可以谈谈感受)

    ItextSharp,隆重登场。

    bd8087d236651ac2937bab7c8b1557c7.png

    创建输出的PDF和页码的字体

    23b32700ea11c0785dec0a2445095d71.png

    因为还要统计每笔订单对应的页码,所以多了一个40Page.txt

    40.txt里面是每月对应的订单ID,每生成一个月的大PDF后,40.txt的内容我都换成下个月的。这个合成速度很快,几秒钟就搞定一个月的订单。

    然后就是统计列表,纸质打印,装订了,这个程序就干不了

    总结:pechkin有默认的页边距,和直接用网页打印成PDF有区别,比用网页打印的要缩小了,上面的代码只供参考,因为我的代码也没有做整理,有需要经常做上面工作的朋友可以加微信

    展开全文
  • private void btn_outpdf_Click(object sender, EventArgs e) { AcadDocument doc = null; string destPath = string.Empty; foreach (var file in fileslist) { doc = _app.Documents.Open(file,...
  • C#打印操作实例--批量打印学生证实例源码
  • winform 按顺序连续打印多个PDF文件

    千次阅读 2014-05-05 14:13:00
    原文:winform 按顺序连续打印多个PDF文件关于PDF打印的问题,前面有篇文章(点这里查看)也叙述过,今天来谈谈另外一种方法 其实方法很简单,因为需要把多个PDF文档按顺序连续打印,为此我们为什么不把要打印pdf...
  • 使用C#做个个小的winform工具发现 速度还蛮快,打算用.NET WEBAPI写个接口进行PDF转图片,我把代码给大家,目前百度上没这么全的,给大家闭坑了。 项目引用包如下: PdfiumViewer ImageResizer.Plugins.PdfiumRen
  • C#实战之CAD二次开发005:打印pdf

    千次阅读 2019-07-28 12:05:54
    上期我们介绍了如何在CAD中插入文字和插入图块两个功能,这期我们再讲一下如何实现CAD打印pdf功能。 打印pdf 要实现打印pdf功能,需要借助一个软件pdfFactory,这个是pdf虚拟打印机,下载地址 链接:...
  • AutoCad 批量打印

    2021-08-25 09:01:56
    Batchplot(CAD批量打印工具)安装步骤 操作特别说明 软件下载和安装 https://www.onlinedown.net/soft/982973.htm 基本简介 Batchplot是一个专门针对AutoCAD2000以上版本设计的单DWG多图纸的批量打印、批量...
  • 从.NET(比如C#)里面调用AutoCAD ActiveX API实现后台打印DWG文件为PDF文件,而且要把打印页面的大小设置成和DWG视图的页面的大小一致。当然除了ActiveX API,其它接口,比如ObjectARX和AutoCAD.NET API也支持打印并...
  • 在设计行业CAD算是入门软件,同时也是必备软件,大神们在做CAD时经常批量打印,首先,先解释下“CAD批量打印”这个名词,因为有些人可能对CAD的批量打印存在一定的误解。 CAD批量打印,并不是对多个dwg文件进行打印...
  • 数字签名广泛用于保护PDF文档,可见数字签名在日常生活中是相当重要的。在这篇文章中我将与大家分享如何给PDF文件添加可见的数字签名。 首先我下载了一个由E-iceblue公司开发的免费版的PDF组件-Free Spire.PDF,控件...
  • C# 文本文件批量打印工具,网上也有一些程序实现了文本文件的打印,有些问题1、长行文字,不能自动换行打印2、只能打印单个文件只好自己编写一个工具,解决以上文件,并可以设置打印页面,页眉页脚,可以设置字体的...
  • 其主要难点就在于如何生成条形码、如何批量打印条形码以及将界面条形码信息批量生成以其各自的 barcode 码命名的pdf文件并存到指定的目录下。由于自身“储备”不足于是开始大量的在网上搜索关于这几个方面的资料,...
  • C#根据html生成PDF

    千次阅读 2018-02-23 09:57:58
    using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;...using iTextSharp.text...using iTextSharp.text.pdf; using System.IO; using iTextS...
  • C# 多张图片生成PDF

    2020-07-25 17:55:57
    C# 多张图片生成PDF //存放image路径 List<string> imageList = new List<string>(); imageList.Add(@"D:\image1.png"); imageList.Add(@"D:\image2.png"); //生成PDF路径 string fileName = string....
  • CAD工具——批量打印

    2021-12-03 09:25:24
    批量打印图纸。 执行方式 (1)单击菜单栏“功能→高级工具→批量打印”。如图: (2)在左下角命令行输入“MxC_BitchPrint”按enter键。如图: 执行命令之后,系统会弹出“批量打印”对话框。 选项说明 (1)图...
  • WPS转PDF工具

    2017-10-25 21:28:01
    WPS转PDF工具,命令行工具,用命令行运行,第一个参数为输入的WPS文件,第二个参数(可选)为输出PDF文件名字
  • 实例045 批量替换某一类字符串 58 实例046 对字符串进行加密与解密 59 3.3 常用数字处理技术 61 实例047 判断输入的货币值是否为数字 61 实例048 对计算结果进行四舍五入 62 实例049 商品金额的大小写转换 63 实例...
  • 项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.Net+FreeSpire.PDF三个类库实现了生成pdf、生成条形码和打印pdf功能。 首先在项目作用使用NuGet获取这三个类库的引用。 其次把C:...
  • 顺丰丰桥面单打印.rar

    2020-09-16 09:34:56
    改资源为顺丰丰桥的电子面单打印接口完整代码,文章案例:https://blog.csdn.net/weixin_48529185/article/details/108602135
  • 记录一个将html页面转换成PDF文件的转换器,该...同时附上C#将html转换为PDF的代码: //生成PDF string page= "~/Student/Print_StudentCard.aspx";//要打印的页面 string pdf = Server.MapPath("~/Upload/wkhtml
  • 一:url抓取图片存入本地 c# 二:将图片和文字存入PDFc# 将url网页上获取的图片...创建一个字典批量存储一下 调用此方法会在bin/debug目录下生成pdf。 private void button1_Click(object sender, EventArg...
  • C#生成word文档 、word转pdf、合并pdf文件等 在系统开发中经常会有用户需求涉及到基于模板导出word文档、pdf文档,或者把几个文件合并成一个进行导出预览等,他们所说需求不一样,但在功能实现上却是相同的。由于...
  • C# TIF文件转PDF

    2022-04-28 10:46:12
    TIF文件转PDF 使用场景 前几天公司管文件的想要一个本地TIF文件转换成PDF的功能,虽然我不明白为什么要转换成PDF(TIF文件是有图层的,可以使用其他软件进行重新编辑),其实是公司购买的致远OA系统不能支持TIF文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,106
精华内容 442
关键字:

c# 批量打印pdf

c# 订阅