C# 添加、刪除PDF空白頁

PDF格式的文檔廣泛應用於電子圖書、產品說明、公司文告、網絡資料、電子郵件等各種領域和場合。我們工作和學習中可能會遇到需要添加文檔頁來添加相應內容,或者刪除文檔中多出的空白頁等情況,因此,本篇文章將介紹如何在C#中來實現添加、刪除PDF空白頁。


示例要點

1.添加PDF空白頁
1.1 在默認位置添加空白頁(文檔末)
1.2 在指定位置添加空白頁
2.刪除空白頁


工具使用

這裏示例中使用的是免費版的.NET PDF控件 Free Spire.PDF for .NET(添加dll引用時,可在安裝路徑下的Bin文件夾中獲取dll文件)

測試文檔截圖(文檔包含兩頁內容):
C# 添加、刪除PDF空白頁


1.添加PDF空白頁

1.1 在默認位置,即文檔末插入一張空白頁

C#

            //創建PDF文檔1,並加載測試文檔
            PdfDocument doc1 = new PdfDocument();
            doc1.LoadFromFile("sample.pdf");

            //添加一頁空白頁到文檔(默認在文檔最後一頁添加)
            doc1.Pages.Add();
            //保存並打開文檔
            doc1.SaveToFile("result1.pdf");
            System.Diagnostics.Process.Start("result1.pdf");

測試結果:
C# 添加、刪除PDF空白頁

1.2 在指定位置插入空白頁

C#

           //創建文檔2,加載測試文檔
            PdfDocument doc2 = new PdfDocument();
            doc2.LoadFromFile("sample.pdf");

            //添加一頁空白頁作爲第2頁
            doc2.Pages.Insert(1);

            //保存並打開文檔
            doc2.SaveToFile("result2.pdf");
            System.Diagnostics.Process.Start("result2.pdf");

測試結果:
C# 添加、刪除PDF空白頁


2. 刪除PDF空白頁

測試文檔:
C# 添加、刪除PDF空白頁

這裏的測試文檔中,包含了兩頁空白頁,一頁空白頁是沒有任何內容的;另一頁空白頁是包含了空白圖片的頁面,看似沒有內容,但是這樣的頁面實際上也是不需要的。
C#

using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.Graphics;

namespace DeleteBlankPage_PDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //應用許可證
            Spire.License.LicenseProvider.SetLicenseFileName("license.elic.xml");

            //創建PdfDocument類對象,並加載PDF文檔
            PdfDocument document = new PdfDocument();
            document.LoadFromFile("Test.pdf");

            //遍歷文檔中所有頁面 
            for (int i = document.Pages.Count - 1; i >= 0; i--)
            {
                //診斷頁面是否爲空白頁
                if (document.Pages[i].IsBlank())
                {
                    //刪除空白頁 
                    document.Pages.RemoveAt(i);
                }
                else
                {
                    //將PDF頁轉換爲Bitmap圖像
                    Image image = document.SaveAsImage(i, PdfImageType.Bitmap);

                    //診斷圖片是否爲空白圖片
                    if (IsImageBlank(image))
                    {
                        //移除包含空白圖片的頁面
                        document.Pages.RemoveAt(i);
                    }
                }
            }

            //保存並打開文檔
            document.SaveToFile("RemoveBlankPage.pdf", FileFormat.PDF);
            System.Diagnostics.Process.Start("RemoveBlankPage.pdf");
        }

        //自定義方法IsImageBlank()診斷圖片是否爲空白圖片
        public static bool IsImageBlank(Image image)
        {
            //初始化Bitmap類實例,遍歷文檔中所有圖片
            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;
        }
    }
}

測試結果:
C# 添加、刪除PDF空白頁

附:VB.NET代碼(刪除PDF空白頁)

Imports Spire.Pdf
Imports System.Drawing
Imports Spire.Pdf.Graphics

Namespace DeleteBlankPage_PDF

    Class Program

        Private Shared Sub Main(ByVal args As String())
            Spire.License.LicenseProvider.SetLicenseFileName("license.elic.xml")
            Dim document As PdfDocument = New PdfDocument()
            document.LoadFromFile("Test.pdf")
            For i As Integer = document.Pages.Count - 1 To 0
                If document.Pages(i).IsBlank() Then
                    document.Pages.RemoveAt(i)
                Else
                    Dim image As Image = document.SaveAsImage(i, PdfImageType.Bitmap)
                    If IsImageBlank(image) Then
                        document.Pages.RemoveAt(i)
                    End If
                End If
            Next

            document.SaveToFile("RemoveBlankPage.pdf", FileFormat.PDF)
            System.Diagnostics.Process.Start("RemoveBlankPage.pdf")
        End Sub

        Public Shared Function IsImageBlank(ByVal image As Image) As Boolean
            Dim bitmap As Bitmap = New Bitmap(image)
            For i As Integer = 0 To bitmap.Width - 1
                For j As Integer = 0 To bitmap.Height - 1
                    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
                Next
            Next

            Return True
        End Function
    End Class
End Namespace

以上全部內容爲本次關於“C# 添加、刪除PDF空白頁”的全部內容,歡迎轉載(轉載請註明出處)
感謝閱讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章