查找并删除 PDF 中的空白页
Spire.PDF for .NET 是一款专门对 Word 文档进行操作的 .NET 类库。致力于在于帮助开发人员轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档,而无需安装 Microsoft Word。
行号用于在每行文本旁边显示 Word 自动计算的行数。当我们需要参考合同或法律文件等文档中的特定行时,它非常有用。word中的行号功能允许我们设置起始值、编号间隔、与文本的距离以及行号的编号方式。使用 Spire.Doc,我们可以实现上述所有功能。本文将介绍如何将 HTML 转换为 PDF。
欢迎加入spire技术交流群:767755948
PDF 文件中的空白页并不少见,因为它们可能是作者有意留下的,也可能是在处理文档时不小心添加的。在阅读或打印文档时,这些空白页可能会很烦人,因此很有必要删除它们。在本文中,您将学习如何使用 Spire.PDF for .NET 以编程方式查找并删除 PDF 文档中的空白页。
安装 Spire.PDF for .NET
首先,您需要将 Spire.PDF for.NET 软件包中包含的 DLL 文件作为引用添加到您的 .NET 项目中。这些 DLL 文件既可以从这个链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.PDF
查找并删除 PDF 文档中的空白页
Spire.PDF for .NET提供了一个PdfPageBase.IsBlank()方法来检测PDF页面是否绝对空白。但有些看起来空白的页面实际上包含白色图像,使用 PdfPageBase.IsBlank() 方法无法将这些页面视为空白页面。因此,有必要创建一个自定义方法IsImageBlank()与PdfPageBase.IsBlank()方法结合使用,以检测这些白色但非空白的页面。
注:该解决方案将把 PDF 页面转换为图像,并检测图像是否为空白。在转换后的图像中,有必要应用许可证来删除评估信息。否则,此方法将无法正常工作。如果您没有许可证,请联系 sales@e-iceblue.com 获取临时许可证,用于评估目的。
具体步骤如下:
- 创建一个 PdfDocument 实例。
- 使用 PdfDocument.LoadFromFile() 方法加载一个 PDF 文档。
- 使用PdfPageBase.IsBlank()方法循环浏览PDF文档中的页面,检测页面是否空白。
- 使用PdfDocument.Pages.RemoveAt()方法删除绝对空白的页面。
- 对于非绝对空白的页面,使用PdfDocument.SaveAsImage()方法将其保存为图像。然后使用自定义方法IsImageBlank()检测转换后的图像是否空白,并使用PdfDocument.Pages.RemoveAt()方法删除 "空白 "页面。
- 使用PdfDocument.SaveToFile()方法保存结果文档。
using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; namespace DeleteBlankPage { class Program { static void Main(string[] args) { //Apply license by license key Spire.License.LicenseProvider.SetLicenseKey("your license key"); //Create a PdfDocument instance PdfDocument document = new PdfDocument(); //Load a sample PDF document document.LoadFromFile("input.pdf"); //Loop through all pages in the PDF for (int i = document.Pages.Count - 1; i >= 0; i--) { //Detect if a page is blank if (document.Pages[i].IsBlank()) { //Remove the absolutely blank page document.Pages.RemoveAt(i); } else { //Save PDF page as image Image image = document.SaveAsImage(i, PdfImageType.Bitmap); //Detect if the converted image is blank if (IsImageBlank(image)) { //Remove the page document.Pages.RemoveAt(i); } } } //Save the result document document.SaveToFile("RemoveBlankPage.pdf", FileFormat.PDF); } //Detect if an image is blank 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; } } }
[VB.NET]
Imports Spire.Pdf Imports Spire.Pdf.Graphics Namespace DeleteBlankPage Class Program Private Shared Sub Main(ByVal args() As String) 'Apply license by license key Spire.License.LicenseProvider.SetLicenseKey("your license key") 'Create a PdfDocument instance Dim document As PdfDocument = New PdfDocument 'Load a sample PDF document document.LoadFromFile("input.pdf") 'Loop through all pages in the PDF Dim i As Integer = (document.Pages.Count - 1) Do While (i >= 0) 'Detect if a page is blank If document.Pages(i).IsBlank Then 'Remove the absolutely blank page document.Pages.RemoveAt(i) Else 'Save PDF page as image Dim image As Image = document.SaveAsImage(i, PdfImageType.Bitmap) 'Detect if the converted image is blank If Program.IsImageBlank(image) Then 'Remove the page document.Pages.RemoveAt(i) End If End If i = (i - 1) Loop 'Save the result document document.SaveToFile("RemoveBlankPage.pdf", FileFormat.PDF) End Sub 'Detect if an image is blank Public Shared Function IsImageBlank(ByVal image As Image) As Boolean Dim bitmap As Bitmap = New Bitmap(image) Dim i As Integer = 0 Do While (i < bitmap.Width) Dim j As Integer = 0 Do While (j < bitmap.Height) Dim pixel As Color = bitmap.GetPixel(i, j) If ((pixel.R < 240) _ OrElse ((pixel.G < 240) _ OrElse (pixel.B < 240))) Then Return False End If j = (j + 1) Loop i = (i + 1) Loop Return True End Function End Class End Namespace
申请临时许可证
若想从生成的文档中删除评估信息,或解除功能限制,申请 30 天试用许可证。