当打印PDF文档的时候,默认情况下纸张大小是A4。但是有些情况下原文档不是A4大小,我们需要保持原来的页面大小怎么办呢?这个时候就需要自定义纸张大小来实现这个功能。本文将对此做详细介绍.
情况1 使用虚拟打印机自定义纸张大小打印,比如保持原来页面大小打印到PDF。
- C#
- VB.NET
//加载需要打印的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();
'加载需要打印的PDF文档
Dim doc As New Spire.Pdf.PdfDocument()
doc.LoadFromFile(FileName)
'获取原文档第一页的纸张大小,这里的单位是Point
Dim size As SizeF = doc.Pages(0).Size
'实例化PaperSize对象,设置其宽高
'需要特别注意的是这里涉及到单位的转换,PaperSize的宽高参数默认单位是百英寸
Dim paper As PaperSize = New PaperSize("Custom", CType((size.Width / (72 * 100)),Integer), CType((size.Height / (72 * 100)),Integer))
paper.RawKind = CInt(PaperKind.[Custom])
'设置打印的纸张大小为原来文档的大小
doc.PrintSettings.PaperSize = paper
'需要选择FitSize打印模式
doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, True)
'打印
doc.Print()
情况2 使用真实打印机设置纸盒中的纸张大小打印,比如原来A4的文档打印成A3的大小。
- C#
- VB.NET
//加载需要打印的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();
'加载需要打印的PDF文档
Dim doc As New Spire.Pdf.PdfDocument()
doc.LoadFromFile(FileName)
Dim p As PaperSize = Nothing
'实例化一个PrintDocument对象来获取当前打印机的纸盒信息
Dim printDoc As New PrintDocument()
'遍历打印机纸盒里面的纸张,找到需要的A3
For Each ps As PaperSize In printDoc.PrinterSettings.PaperSizes
If ps.PaperName.Equals("A3") Then
p = ps
Exit For
End If
Next
'设置打印的纸张大小为A3
doc.PrintSettings.PaperSize = p
'打印
doc.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, True)
doc.Print()