当打印PDF文档的时候,默认情况下纸张大小是A4。但是有些情况下原文档不是A4大小,我们需要保持原来的页面大小怎么办呢?这个时候就需要自定义纸张大小来实现这个功能。本文将介绍如何使用.NET PDF组件Spire.PDF在C#应用程序中自定义纸张大小打印PDF。

在使用以下代码前,需要下载Spire.PDF安装,并从安装路径下引用Spire.Pdf.dll到工程中(或可从NuGet搜索Spire.PDF并安装)。

使用虚拟打印机自定义纸张大小打印,比如保持原来页面大小打印到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();

使用真实打印机设置纸盒中的纸张大小打印,比如原来A4的文档打印成A3的大小

//加载需要打印的PDF文档
Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument();
doc.LoadFromFile(FileName);

PaperSize p = null;
//实例化一个PrintDialog对象来获取当前打印机的纸盒信息
PrintDialog dialogPrint = new PrintDialog();

//遍历打印机纸盒里面的纸张,找到需要的A3
foreach (PaperSize ps in dialogPrint.PrinterSettings.PaperSizes)
{
    if (ps.PaperName.Equals("A3"))
        p = ps;
}

//设置打印的纸张大小为A3
doc.PrintSettings.PaperSize = p;

//打印
doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, true);
doc.Print();