平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“C#代码实现方法按实际大小打印PDF或将其缩放至适合页面”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
实际处理时,打印 PDF 文件时,确保文档内容按照预期效果呈现很重要。根据实际需求,能够选择按实际大小打印,以保留文档的原始尺寸;也能够选择将内容缩放至页面大小,使其完整显示在纸张上。
落到代码里,在不同的打印场景里,开发人员可能需根据纸张尺寸和输出要求调整 PDF 文档的打印方式。下面会介绍如何采用 C# 实现 PDF 文档的适合页面打印、实际大小打印,以及在自定义尺寸纸张上按实际大小打印。
安装相关依赖
从实现思路看,首先,需将 PDF 处理所需的 DLL 文件添加为 .NET 项目的引用。能够借助下载对应的安装包拿到这些文件,也能够采用 NuGet 包管理器进行安装。
PM> Install-Package Spire.PDF
采用 C# 将 PDF 内容缩放至适合页面大小
实际处理时,将 PDF 设置为适合页面大小打印时,系统会根据纸张尺寸自动缩放文档内容,确保页面内容完整地显示在可打印区域内,而不受原始文档尺寸的影响。
在 C# 里,能够借助设置打印页面布局和缩放模式来实现这一效果。具体步骤如下所示:
- 新建一个
PdfDocument类的实例。 - 采用
PdfDocument.LoadFromFile()方法加载 PDF 文件。 - 调整打印设置,借助
PdfDocument.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode pageScalingMode, bool autoPortraitOrLandscape)方法设置页面缩放模式,使 PDF 内容适应纸张尺寸。 - 调用
PdfDocument.Print()方法执行打印操作。
完整示例如下所示:
using Spire.Pdf;
using Spire.Pdf.Print;
namespace PrintPdfToFitPageSize
{
internal class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 类的实例
PdfDocument pdf = new PdfDocument();
// 将指定的 PDF 文件加载到 PdfDocument 对象中
pdf.LoadFromFile("Sample.pdf");
// 配置打印设置,将 PDF 内容缩放至适合纸张大小
pdf.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.FitSize, false);
// 执行打印操作,打印已加载的 PDF 文档
pdf.Print();
}
}
}
采用 C# 按 PDF 原始尺寸打印
实际处理时,按 PDF 原始尺寸打印时,文档内容不会经过缩放,而是保留文件中定义的页面尺寸,确保打印输出与 PDF 的原始尺寸一致。
在 C# 里,能够借助设置打印页面布局来实现这一效果。具体步骤如下所示:
- 新建一个
PdfDocument类的实例。 - 采用
PdfDocument.LoadFromFile()方法加载 PDF 文件。 - 调整打印设置,借助
PdfDocument.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode pageScalingMode, bool autoPortraitOrLandscape)方法设置打印模式,使 PDF 按原始尺寸输出,不进行缩放。 - 调用
PdfDocument.Print()方法执行打印操作。
完整示例如下所示:
using Spire.Pdf;
using Spire.Pdf.Print;
using System.Drawing.Printing;
namespace PrintPdfAtActualSize
{
internal class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 类的新实例
PdfDocument pdf = new PdfDocument();
// 将 PDF 文件加载到 PdfDocument 对象中
pdf.LoadFromFile("Sample.pdf");
// 将纸张边距设置为 0
pdf.PrintSettings.SetPaperMargins(0, 0, 0, 0);
// 配置打印设置,按 PDF 原始尺寸打印,不进行缩放
pdf.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.ActualSize, false);
// 执行打印操作,打印已加载的 PDF 文档
pdf.Print();
}
}
}
采用 C# 在自定义尺寸纸张上按 PDF 原始大小打印
在这个场景下,在某些场景里,可能需采用指定尺寸的纸张打印 PDF,同时保留文档的原始页面尺寸。为此,能够借助 PaperSize 类定义自定义纸张大小,再将其设置为文档的打印参数。
具体步骤如下所示:
- 新建一个
PdfDocument类的实例。 - 采用
PdfDocument.LoadFromFile()方法加载 PDF 文件。 - 采用
PaperSize类定义打印所需的自定义纸张尺寸。 - 借助
PdfDocument.PrintSettings.PaperSize属性,将自定义纸张尺寸应用来打印设置。 - 采用
PdfDocument.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode pageScalingMode, bool autoPortraitOrLandscape)方法设置打印模式,确保 PDF 按原始尺寸输出,不进行缩放。 - 调用
PdfDocument.Print()方法执行打印操作。
完整示例如下所示:
using Spire.Pdf;
using Spire.Pdf.Print;
using System.Drawing.Printing;
namespace PrintPdfOnCustomSizedPaper
{
internal class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 类的新实例
PdfDocument pdf = new PdfDocument();
// 将指定的 PDF 文件加载到 PdfDocument 对象中
pdf.LoadFromFile("Sample.pdf");
//// 定义 A3 纸张尺寸用于打印
//PaperSize paperSize = new PaperSize
//{
// // 将纸张类型设置为 A3
// RawKind = (int)PaperKind.A3
//};
// 定义自定义纸张尺寸用于打印
PaperSize paperSize = new PaperSize
{
// 设置纸张宽度
Width = 283 * 100, // 英寸*100
// 设置纸张高度
Height = 826 * 100, // 英寸*100
// 将纸张类型设置为自定义
RawKind = (int)PaperKind.Custom
};
// 将自定义纸张尺寸应用于 PdfDocument 的打印设置
pdf.PrintSettings.PaperSize = paperSize;
// 将纸张边距设置为 0
pdf.PrintSettings.SetPaperMargins(0, 0, 0, 0);
// 配置打印设置,按 PDF 原始尺寸打印,不进行缩放
pdf.PrintSettings.SelectSinglePageLayout(PdfSinglePageScalingMode.ActualSize, false);
// 执行打印操作,打印已加载的 PDF 文档
pdf.Print();
}
}
}
总结
结合项目来看,本文主要讲解了如何采用 C# 实现 PDF 文档的多种打印方式,包括将内容缩放至适合页面大小、按原始尺寸打印,以及在自定义尺寸纸张上进行原始尺寸打印。
实际处理时,借助合理设置打印参数,能够根据不同的纸张规格和输出需求控制 PDF 文档的打印效果:
- 适合页面大小打印: 自动缩放 PDF 内容,使其完整显示在纸张的可打印区域内。
- 按原始尺寸打印: 保留 PDF 文档的原始页面尺寸,避免打印过程中发生缩放。
- 自定义纸张尺寸打印: 根据实际打印需求设置纸张的宽度和高度,同时按 PDF 原始尺寸输出。
结合项目来看,在实际应用里,应根据 PDF 页面尺寸、目标纸张规格及打印设备的兼容情况选择合适的打印方式,以确保打印内容符合预期。
从实现思路看,总的来说,C#打印PDF文档适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。