博客
关于我
C# 打印PDF文档的10种方法
阅读量:415 次
发布时间:2019-03-06

本文共 3974 字,大约阅读时间需要 13 分钟。

操作PDF文档时的打印需求因项目而异,常见的打印场景可分为多种情况,如静默打印、指定页码范围、纸张大小设置等。以下将介绍10种常见的PDF打印需求及其实现方法。

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

默认打印机通常是系统预装的打印机(如Windows自带的打印机)。在代码中可以通过Spire.PDF for .NET库实现默认打印机打印PDF文档的功能。

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

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

Microsoft XPS Document Writer是一种常用的虚拟打印机,可以将PDF文档转换为XPS格式文件进行打印。

// 创建PdfDocument对象并加载PDF文档PdfDocument doc = new PdfDocument();doc.LoadFromFile("Test.pdf");// 设置打印机为Microsoft XPS Document Writerdoc.PrintSettings.PrinterName = "Microsoft XPS Document Writer";// 将PDF文档打印为XPS格式文件doc.PrintSettings.PrintToFile("PrintToXps.xps");doc.Print();

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

在某些场景下,可能需要指定特定打印机并设置打印页码范围。以下是如何实现的方法:

// 创建PdfDocument对象并加载PDF文档PdfDocument doc = new PdfDocument();doc.LoadFromFile("Test.pdf");// 设置打印机为HP LaserJet P1007doc.PrintSettings.PrinterName = "HP LaserJet P1007";// 设置打印页码范围为1-5页doc.PrintSettings.SelectPageRange(1, 5);// 打印PDF文档doc.Print();

4. 静默打印PDF文档

静默打印是指在打印过程中不显示打印界面,适用于需要自动化打印的场景。

// 创建PdfDocument对象并加载PDF文档PdfDocument doc = new PdfDocument();doc.LoadFromFile("Test.pdf");// 设置静默打印doc.PrintSettings.PrintController = new StandardPrintController();// 打印PDF文档doc.Print();

5. 双面打印PDF文档

双面打印可以节省纸张,但需要确保打印机支持该功能。以下是如何实现的方法:

// 创建PdfDocument对象并加载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文档PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("Test.pdf");// 设置打印为黑白模式pdf.PrintSettings.Color = false;// 打印PDF文档pdf.Print();

7. 打印PDF文档时选择不同的出纸盒

在一些打印场景下,可能需要根据需要选择不同的纸盒进行打印。

// 创建PdfDocument对象并加载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对象并加载PDF文档PdfDocument doc = new PdfDocument();doc.LoadFromFile("Test.pdf");// 设置打印份数为2份doc.PrintSettings.Copies = 2;// 打印PDF文档doc.Print();

9. 打印PDF一页为多页,多页为一页

Spire.PDF支持将PDF文档的多张页面打印到一张纸上(如2页/张),或将单张页面打印成多张纸。

单页打印为多页:

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

多页打印为单页:

// 创建PdfDocument对象并加载PDF文档PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("Input1.pdf");// 将PDF文档的单张页面根据标准页面大小(A4纸,595pt*842pt)拆分并打印pdf.PrintSettings.SelectSplitPageLayout();pdf.Print();

10. 自定义纸张大小打印PDF文档

Spire.PDF支持自定义纸张大小打印,以下是实现方法:

使用虚拟打印机自定义纸张大小:

// 创建PdfDocument对象并加载需要打印的PDF文档Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument();doc.LoadFromFile("FileName.pdf");// 获取原文档第一页的纸张大小Point size = doc.Pages[0].Size;// 创建自定义纸张大小PaperSize paper = new PaperSize("Custom", (int)(size.Width / 72 * 100), (int)(size.Height / 72 * 100));paper.RawKind = (int)PaperKind.Custom;// 设置打印纸张大小为自定义大小doc.PrintSettings.PaperSize = paper;// 设置打印为原纸张大小模式doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, true);// 打印文档doc.Print();

使用真实打印机设置纸盒中的纸张大小:

// 创建PdfDocument对象并加载需要打印的PDF文档Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument();doc.LoadFromFile("FileName.pdf");// 获取当前打印机支持的纸张大小PaperSize p = null;PrintDocument printDoc = new PrintDocument();foreach (PaperSize ps in printDoc.PrinterSettings.PaperSizes){    if (ps.PaperName.Equals("A3"))    {        p = ps;        break;    }}// 设置打印纸张大小为A3doc.PrintSettings.PaperSize = p;// 设置打印为原纸张大小模式doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, true);// 打印文档doc.Print();

转载地址:http://uunkz.baihongyu.com/

你可能感兴趣的文章
nginx 后端获取真实ip
查看>>
Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 常用配置清单
查看>>
nginx 常用配置记录
查看>>
Nginx 我们必须知道的那些事
查看>>
Nginx 的 proxy_pass 使用简介
查看>>
Nginx 的配置文件中的 keepalive 介绍
查看>>
Nginx 负载均衡与权重配置解析
查看>>
Nginx 负载均衡详解
查看>>
nginx 配置 单页面应用的解决方案
查看>>
nginx 配置https(一)—— 自签名证书
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx 配置解析:从基础到高级应用指南
查看>>
nginx+Tomcat性能监控
查看>>
Nginx下配置codeigniter框架方法
查看>>
nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:128
查看>>
nginx添加模块与https支持
查看>>
Nginx用户认证
查看>>
Nginx的Rewrite正则表达式,匹配非某单词
查看>>