C#打印PDF文档的10种方法(小结)

操作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();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 用C#来解析PDF文件

    1. 介绍 这个项目让你可以去读取并解析一个PDF文件,并将其内部结构展示出来. PDF文件的格式标准文档可以从Adobe那儿获取到. 这个项目基于"PDF指南,第六版,Adobe便携文档格式1.7 2006年11月". 它是一个恐怕有1310页的大部头. 本文提供了对这份文档的简洁概述. 与此相关的项目定义了用来读取和解析PDF文件的C#类. 为了测试这些类,附带的测试程序PdfFileAnalyzer让你可以去读取一个PDF文件,分析它并展示和保存结果. 程序将PDF文件分割成单独

  • c#实现将pdf转文本的示例分享

    如何解析PDF文件 在.NET中从PDF文件里提取文本的几种主要方法有: 1.Microsoft 的 IFilter 接口 和 Adobe 的 IFilter 实现: 2.iTextSharp: 3.PDFBox. 不幸的是这些 PDF 解析方案都不完美.我们将在下面讨论这些方法. Adobe PDF IFilter 为了使用 IFilter 接口来解析 PDF 文件,你需要: Windows 2000 或者后续版本 Adobe Acrobat 或 Reader 7.0.5+ (或单独的 Ado

  • C#将jpg转换为pdf的方法

    本文实例讲述了C#将jpg转换为pdf的方法.分享给大家供大家参考.具体实现方法如下: C#生成pdf文件需要使用到一个itextsharp.dll文件,itextsharp.dll是一个开源的在C#中用来生成PDF文档的库文件,下面我们来给大家介绍利用itextsharp来生成库文件. 介绍 PDF生成所需类库itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器 具体代码如下: 复制代码 代码如下: void ConvertJ

  • c#实现pdf的另存为功能

    今天跟大家分享一个实现PDF另存为的效果,是调用Acrobat SDK的JavaScript实现的. 复制代码 代码如下: /// <summary>        /// PDF另存为效果        /// </summary>        /// <param name="fileName">PDF文件名</param>        /// <param name="saveFileName">

  • C# 生转换网页为pdf

    从htm生成pdf大概可以分两步实现,第一步,解析htm,就是将htm源文件中那一对文本转换为浏览器最终呈现给我们那种图文并茂的结果.这是一个不可完成的任务,因为目前为止业界的软件巨头也没有谁把htm解析做得很好的.对比ie.firefox等浏览器的显示结果便可想而知.既然业界难题,我也就不去钻牛角尖做技术攻关了,先跳过这步,考虑下一步的事情. 第二步,绘制pdf,这个简单,网上有很多资料,有兴趣的朋友可以研究 pdf的文件格式,安装二进制组装pdf.我有兴趣,然而没有时间,我觉得软件从业者时刻

  • C#实现TIF图像转PDF文件的方法

    本文实例讲述了C#实现TIF图像转PDF文件的方法.分享给大家供大家参考.具体实现方法如下: 这里介绍使用TIFtoPDF的用法.该工具可以将多个TIF图像文件合并成一个PDF文件 TIFtoPDF.rar文件点击此处本站下载. Program.cs文件如下: using System; using System.Collections.Generic; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; usi

  • C#获取指定PDF文件页数的方法

    本文实例讲述了C#获取指定PDF文件页数的方法.分享给大家供大家参考.具体如下: using System; using System.IO; using System.Text.RegularExpressions; using System.Windows.Forms; namespace RobvanderWoude { class PDFPageCount { static int Main( string[] args ) { #region Get help if ( args.Le

  • C#实现HTML转WORD及WORD转PDF的方法

    本文实例讲述了C#实现HTML转WORD及WORD转PDF的方法.分享给大家供大家参考.具体如下: 功能:实现HTML转WORD,WORD转PDF 具体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; usi

  • C#打印PDF文档的10种方法(小结)

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些归纳总结,这里归纳了10种打印需求及方法.如下: 使用默认打印机打印PDF文档 使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档 指定打印机及PDF文档打印页码范围 静默打印PDF文档 双面打印PDF文档 黑白打印PDF文档 打印PDF文档时选择不同的出纸盒

  • 三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导入: 方法1:下载jar包.下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar导入java程序. 方法2:可通过maven库导入.参考导入方法. Java代码示例 [示例1]静默打印 即通过使用默认打印机直接打印PDF文档.打印时,我们可以设置打印份数,设置纸张打印页边距等. impo

  • C#使用iTextSharp从PDF文档获取内容的方法

    本文实例讲述了C#使用iTextSharp从PDF文档获取内容的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using iTex

  • Python实现pdf文档转txt的方法示例

    本文实例讲述了Python实现pdf文档转txt的方法.分享给大家供大家参考,具体如下: 首先,这是一个比较粗糙的版本,因为已经够用了,而且对pdf的格式不熟悉,所以暂时没有进一步优化. 还有,这是转成txt的,所以如果是有图片的pdf是无法保存图片的. 至于本来就是图片的文本,这里是无法分析出来的.那些图片的pdf,估计要用图形匹配的方式来处理,类似于超速拍摄的车牌识别. 不过这样的程度,已经不是文本处理了.扯远了... 转出来的文字,好像按照pdf里面的所展示的来换行了,看不到有什么规则还原

  • 使用python实现回文数的四种方法小结

    回文数就是指整数倒过来和原整数相等. Example 1: Input: 121 Output: true Example 2: Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome. Example 3: Input: 10 Output: false Expla

  • Linux删除目录下的文件的10种方法小结

    看到了一遍文章,便突发奇想的想起Linux中删除目录下的所有文件的方法:整理了几个,如有不足,还望读者不吝赐教! 删除当前目录下的文件 1.rm -f * #最经典的方法,删除当前目录下的所有类型的文件 2.find . -type f -delete或find . -type f -exec rm -f {} \; #用find命令查找普通文件并删除or用find命令的处理动作将其删除 3.find . -type f | xargs rm -f #用于参数列表过长;要删除的文件太多 4.rm

  • Linux下查看压缩文件内容的10种方法(小结)

    通常来说,我们查看归档或压缩文件的内容,需要先进行解压缩,然后再查看,比较麻烦.今天给大家介绍 10 不同方法,能够让你轻松地在未解压缩的情况下查看归档或压缩文件的内容. 从技术上讲,查看归档或压缩文件不提前进行解压是不可能的.本文介绍的方法中会将这些压缩文件在后台一个临时目录 /tmp 中进行解压缩.重启系统后,/tmp 目录的内容将被清空. 在进一步讨论之前,这里先解释一下归档和压缩文件. 归档 是将多个文件或文件夹组合成一个文件的过程.在这种情况下,生成的文件没有被压缩. 压缩 是一种将多

  • 基于PHP与XML的PDF文档生成技术

    摘要 本论文简要介绍了PHP.XML.PDF等技术的原理以及它们的应用情况.力图运用PHP面向对象的特性,构建出一套基于PHP和XML的在线PDF文档生成系统.文中详细探讨了整个系统的组成部分以及各自的实现过程.并在最后给出一个运用这套系统实现的动态创建报表的实例. AbstractThis article introduced the fundamentls of PHP,XML and PDF and their application situation at present,expect

  • 手把手教你使用Java实现在线生成pdf文档

    目录 一.介绍 二.案例实现 2.1添加iText依赖包 2.2简单实现 2.3复杂实现 2.4变量替换方式 三.总结 一.介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票.订单的库存打印单.各种电子签署合同等等,以方便用户查看.打印或者下载. 例如下图的电子发票! 熟悉这块业务的童鞋,一定特别清楚,目前最常用的解决方案是:把相关的数据信息,通过一些技术手段生成对应的 PDF 文件,然后返回给用户,以便

  • 用PHP编写PDF文档生成器

    PHP一个最大的优点就是它对新技术的支持非常容易,这种语言的可扩展性使得开发人员能够很方便地添加新的模块,而且遍布世界的技术团体的支持和众多扩展模块的支持使得PHP已经成为功能最齐全的Web编程语言之  一.目前可得到的扩展模块已经能够使开发人员执行IMAP和POP3操作,可以动态产生图象和Shockwave Flash动画,进行信用卡验证,敏感数据的加密解密,还能够解析XML格式的数据.但这还不是全部,现在,又有一个新的模块可以与PHP进行绑定了,那就是PDFLib扩展模块,它能够让开发人员动

随机推荐