首页 > 编程语言 >C# 打印PDF文件之使用不同打印机打印所有页面或部分页面

C# 打印PDF文件之使用不同打印机打印所有页面或部分页面

时间:2022-12-30 12:01:24浏览次数:59  
标签:打印机 dialogPrint C# doc 打印 PrinterSettings 页面


最近在逛国外各大编程社区论坛的时候,发现很多人都在问一个关于PDF文件打印的问题:打印时如何选择非默认打印机并设置打印页面的范围。而一般情况下,打印时选择的打印机是默认打印机,打印页面范围是所有页面,如果要选择其他打印机或打印部分页面,需要对代码进行一定的设置。我在这里分享一个解决方案,让其他有同样需求的朋友少走点冤枉路。

在这个解决方案中我使用了一个免费的PDF控件,感兴趣的朋友可以在Codeplex官网:​​https://freepdf.codeplex.com​​上下载。

下面是该解决方案的详细代码分步解析:

第一步:添加项目引用。

安装控件后,创建一个新的项目,找到控件的安装目录,在项目的“解决方案”窗口右击->添加引用,选择和项目.NET Framework版本对应的dll文件进行添加;

如下图:

C# 打印PDF文件之使用不同打印机打印所有页面或部分页面_解决方案

第二步:使用命名空间。

在该方案中,我使用的命名空间如下:

using Spire.Pdf;
using System.Windows.Forms;
using System.Drawing.Printing;

第三步:创建一个新的PDF文档,并加载待打印的PDF文件。

PdfDocument doc = new PdfDocument();
doc.LoadFromFile("sample.pdf");

如果需要使用默认打印机打印所有页面,请看第四步。如果需要使用其他打印机并设置打印页面范围,请看第五步。

第四步:使用默认打印机打印所有页面。

doc.PrintDocument.Print();

第五步:选择打印机和设置打印页面范围。

PrintDialog dialogPrint = new PrintDialog();
dialogPrint.AllowPrintToFile = true;
dialogPrint.AllowSomePages = true;
dialogPrint.PrinterSettings.MinimumPage = 1;
dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
dialogPrint.PrinterSettings.FromPage = 1;
dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;

if (dialogPrint.ShowDialog() == DialogResult.OK)
{
//设置打印的起始页码
doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
//设置打印的终止页码
doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
//选择打印机
doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;

PrintDocument printDoc = doc.PrintDocument;
dialogPrint.Document = printDoc;
printDoc.Print();
}

运行项目,输出的效果图如下(打印机和打印页面范围可以自己选择):

C# 打印PDF文件之使用不同打印机打印所有页面或部分页面_System_02

全部代码如下:

using Spire.Pdf;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace PrintPDF
{
class Program
{
static void Main(string[] args)
{
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("sample.pdf");

//Use the default printer to print all the pages
//doc.PrintDocument.Print();

//Set the printer and select the pages you want to print

PrintDialog dialogPrint = new PrintDialog();
dialogPrint.AllowPrintToFile = true;
dialogPrint.AllowSomePages = true;
dialogPrint.PrinterSettings.MinimumPage = 1;
dialogPrint.PrinterSettings.MaximumPage = doc.Pages.Count;
dialogPrint.PrinterSettings.FromPage = 1;
dialogPrint.PrinterSettings.ToPage = doc.Pages.Count;

if (dialogPrint.ShowDialog() == DialogResult.OK)
{
doc.PrintFromPage = dialogPrint.PrinterSettings.FromPage;
doc.PrintToPage = dialogPrint.PrinterSettings.ToPage;
doc.PrinterName = dialogPrint.PrinterSettings.PrinterName;

PrintDocument printDoc = doc.PrintDocument;
dialogPrint.Document = printDoc;
printDoc.Print();
}
}
}
}


标签:打印机,dialogPrint,C#,doc,打印,PrinterSettings,页面
From: https://blog.51cto.com/u_15656056/5979854

相关文章

  • C#/VB.NET 创建PDF/UA文件
    1.什么是PDF/UA文件PDF/UA,即UniversallyAccessiblePDF,该格式的PDF文件是于2012年8月以ISO标准14289-1发布的、具有普遍可访问的PDF文档标准。为带标签的PDF文档(TaggedPDF......
  • Spire.Doc API 可以在下载啦!
    近期,我们会将E-iceblue公司发布的系列产品帮助文档API陆续提交到.今天我们提交的是Spire.DocAPI.先来看看Spire.Doc产品的API样式图:Spire.DocAPI详细罗列了Spire.Doc......
  • C# PPT 为形状设置三维效果
    在PPT中,形状是非常重要的元素。3-D形状,立体多元,给人耳目一新的感觉。在幻灯片中添加3-D效果形状,必然会为PPT的整体效果增色不少。为形状设置三维格式时,可设置棱台,轮廓线,表面......
  • Leetcode209
    209.MinimumSizeSubarraySum        i , s , l = 0, 0, 0        for j in range(len(nums)):            s += nums[j......
  • C# 获取电脑SN号
    C#获取电脑SN号 ///<summary>///获得电脑SN号///</summary>publicstaticstringGetPcsnString(){varpcs......
  • echartsX轴时间轴固定显示0-24小时
    时间格式化使用moment.js,按需求添加,如不需要请手动格式化至相应格式npminstallmoment--save获取当天起始时间moment().startOf('day').format('YYYY-MM-DDHH......
  • Android笔记--Activity--启停活动页面
    Activity启动从当前页面跳转到新的页面:startActivity(newIntent(原页面.this,目标页面.class))而若是从当前页面返回到上一个页面,相当于关闭当前页面,使用finish()代码返......
  • HWC和CHW数据格式
     原文链接↓NCHWbatch批量大小channels,特征图通道数特征图的高特征图的宽 NCHW中,“N”batch批量大小,“C”channels特征图通道数,“H”特征图的高,和“W”特......
  • SpringCloud Gateway源码中的适配器模式
    SpringCloudgateway中有两种过滤器,路由过滤器(接口为GatewayFilter)和全局过滤器(接口为GlobalFilter);路由过滤器GatewayFilter的定义:1publicinterfaceGatewayFilter......
  • 在windows上构建OpenCascade
    基于作者QuaoarsWorkshop的视频OpenCascadeLessons,讲的非常详细,观看需要魔法什么是OCCT?.首先,OpenCASCADETechnologySDK是一个几何建模库,或者更简单地说,它是一个几......