查找并刪除 PDF 中的空白頁(yè)
Spire.PDF for .NET 是一款專門對(duì) Word 文檔進(jìn)行操作的 .NET 類庫(kù)。致力于在于幫助開(kāi)發(fā)人員輕松快捷高效地創(chuàng)建、編輯、轉(zhuǎn)換和打印 Microsoft Word 文檔,而無(wú)需安裝 Microsoft Word。
行號(hào)用于在每行文本旁邊顯示 Word 自動(dòng)計(jì)算的行數(shù)。當(dāng)我們需要參考合同或法律文件等文檔中的特定行時(shí),它非常有用。word中的行號(hào)功能允許我們?cè)O(shè)置起始值、編號(hào)間隔、與文本的距離以及行號(hào)的編號(hào)方式。使用 Spire.Doc,我們可以實(shí)現(xiàn)上述所有功能。本文將介紹如何將 HTML 轉(zhuǎn)換為 PDF。
歡迎加入spire技術(shù)交流群:767755948
PDF 文件中的空白頁(yè)并不少見(jiàn),因?yàn)樗鼈兛赡苁亲髡哂幸饬粝碌?,也可能是在處理文檔時(shí)不小心添加的。在閱讀或打印文檔時(shí),這些空白頁(yè)可能會(huì)很煩人,因此很有必要?jiǎng)h除它們。在本文中,您將學(xué)習(xí)如何使用 Spire.PDF for .NET 以編程方式查找并刪除 PDF 文檔中的空白頁(yè)。
安裝 Spire.PDF for .NET
首先,您需要將 Spire.PDF for.NET 軟件包中包含的 DLL 文件作為引用添加到您的 .NET 項(xiàng)目中。這些 DLL 文件既可以從這個(gè)鏈接下載,也可以通過(guò) NuGet 安裝。
PM> Install-Package Spire.PDF
查找并刪除 PDF 文檔中的空白頁(yè)
Spire.PDF for .NET提供了一個(gè)PdfPageBase.IsBlank()方法來(lái)檢測(cè)PDF頁(yè)面是否絕對(duì)空白。但有些看起來(lái)空白的頁(yè)面實(shí)際上包含白色圖像,使用 PdfPageBase.IsBlank() 方法無(wú)法將這些頁(yè)面視為空白頁(yè)面。因此,有必要?jiǎng)?chuàng)建一個(gè)自定義方法IsImageBlank()與PdfPageBase.IsBlank()方法結(jié)合使用,以檢測(cè)這些白色但非空白的頁(yè)面。
注:該解決方案將把 PDF 頁(yè)面轉(zhuǎn)換為圖像,并檢測(cè)圖像是否為空白。在轉(zhuǎn)換后的圖像中,有必要應(yīng)用許可證來(lái)刪除評(píng)估信息。否則,此方法將無(wú)法正常工作。如果您沒(méi)有許可證,請(qǐng)聯(lián)系 sales@e-iceblue.com 獲取臨時(shí)許可證,用于評(píng)估目的。
具體步驟如下:
- 創(chuàng)建一個(gè) PdfDocument 實(shí)例。
- 使用 PdfDocument.LoadFromFile() 方法加載一個(gè) PDF 文檔。
- 使用PdfPageBase.IsBlank()方法循環(huán)瀏覽PDF文檔中的頁(yè)面,檢測(cè)頁(yè)面是否空白。
- 使用PdfDocument.Pages.RemoveAt()方法刪除絕對(duì)空白的頁(yè)面。
- 對(duì)于非絕對(duì)空白的頁(yè)面,使用PdfDocument.SaveAsImage()方法將其保存為圖像。然后使用自定義方法IsImageBlank()檢測(cè)轉(zhuǎn)換后的圖像是否空白,并使用PdfDocument.Pages.RemoveAt()方法刪除 "空白 "頁(yè)面。
- 使用PdfDocument.SaveToFile()方法保存結(jié)果文檔。
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
申請(qǐng)臨時(shí)許可證
若想從生成的文檔中刪除評(píng)估信息,或解除功能限制,申請(qǐng) 30 天試用許可證。