C# 如何删除PDF文档中的空白页面
1、安装该类库后,注意在程序中引用Spire.PDF.dll 和Spire.License(文件可在安装路径下的Bin文件夹中获取)
1、添加using指令
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.Graphics;
2、应用许可证
Spire.License.LicenseProvider.SetLicenseFileName("license.elic.xml");
3、创建PdfDocument类对象,并加载PDF文档
PdfDocument document = new PdfDocument();
document.LoadFromFile("Test.pdf");
4、遍历文档中所有页面
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);
}
}
}
这里需要自定义一个方法来判定可能包含的是否是空白图片
//自定义方法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;
}
1、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;
}
}
}
2、完成代码步骤后,调试运行程序,生成文件。下面是删除空白页后的前后效果对比。