博客
关于我
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的可视化神器nginx-gui的下载配置和使用
查看>>
Nginx的是什么?干什么用的?
查看>>
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx运维与实战(二)-Https配置
查看>>
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
Nginx配置参数中文说明
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NHibernate学习[1]
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>