PDF 文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的。在阅读或打印文档时,这些空白页可能会比较麻烦,因此很有必要删除它们。在本文中,您将学习如何使用 Spire.PDF for .NET 通过 C# 查找和并删除 PDF 文档中的空白页。
安装 Spire.PDF for .NET
首先,您需要添加 Spire.PDF for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.PDF
C# 查找并删除 PDF 文档中的空白页
Spire.PDF for .NET 提供了 PdfPageBase.IsBlank() 方法来检测 PDF 页面是否为绝对空白。但有些页面看起来是空白的,但实际上包含了白色图像,使用 PdfPageBase.IsBlank() 方法并无法将这些页面视为空白页面。因此,需要创建一个自定义方法 IsImageBlank() 来检测这些白色但非空白的页面。
请注意:该方案必须应用许可证才能完成,如果您没有许可证,请联系 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取临时许可证,用于评估目的。
具体步骤如下:
- 创建 PdfDocument对象。
- 使用 PdfDocument.LoadFromFile()方法加载 PDF 文件。
- 遍历 PDF 文档中的页面,并使用 PdfPageBase.IsBlank()方法检测页面是否为空白页面。
- 使用 PdfDocument.Pages.RemoveAt()方法删除绝对空白的页面。
- 对于非绝对空白的页面,使用 PdfDocument.SaveAsImage()方法将其保存为图像。然后使用自定义方法 IsImageBlank()检测转换后的图像是否空白,如果是,则使用 PdfDocument.Pages.RemoveAt()方法删除这些“空白”页面。
- 使用 PdfDocument.SaveToFile()方法保存结果文档。
- C#
using Spire.Pdf;using Spire.Pdf.Graphics;using System.Drawing;namespace DeleteBlankPage{class Program{static void Main(string[] args){// 应用授权 Spire.Pdf.License.LicenseProvider.SetLicenseKey("your license key");// 创建 PdfDocument 对象 PdfDocument document = new PdfDocument();// 加载 PDF 文档 document.LoadFromFile("汇报.pdf");// 遍历PDF中的页面 for (int i = document.Pages.Count - 1;i>= 0;i--){// 检测页面是否为空白 if (document.Pages[i].IsBlank()){// 删除绝对空白页 document.Pages.RemoveAt(i);}else{// 将 PDF 页面保存为图像 Image image = document.SaveAsImage(i,PdfImageType.Bitmap);// 检测转换后的图像是否为空白 if (IsImageBlank(image)){// 如果是,则删除页面 document.Pages.RemoveAt(i);}}}// 保存结果文档 document.SaveToFile("删除空白页.pdf",FileFormat.PDF);}// 检测图像是否为空白 public static bool IsImageBlank(Image image){Bitmap bitmap = new Bitmap(image);for (int i = 0;i < bitmap.Width;i++){for (int j = 0;j < bitmap.Height;j++){Color pixel = bitmap.GetPixel(i,j);if (pixel.R < 240 || pixel.G < 240 || pixel.B < 240){return false;}}}return true;}}}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。