Aspose.Pdf是一款可以完全对PDF文件进行各种操作的.NET、Java类控件,可以快速帮助开发人员在其应用程序中进行PDF文件的创建、编辑、和转换,在使用PDF文档时经常会遇到PDF文档中存在空白页,那么怎么来鉴定是空白页呢?一般情况下页面不包含任何操作符、注释、数据、完全白色的图片或者没有任何像素的图片等,要对这些进行鉴定可以通过下面的几个函数来检测,具体如下:
static private bool HasOnlyWhiteColor(Page page)
{
foreach (Operator op in page.Contents)
if (op is Operator.SetColorOperator)
{
Operator.SetColorOperator opSC = op as Operator.SetColorOperator;
System.Drawing.Color color = opSC.getColor();
if (color.R != 255 || color.G != 255 || color.B != 255)
return false;
}
return true;
}
static private bool IsWhiteImage(XImage image)
{
MemoryStream ms = new MemoryStream();
image.Save(ms);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(ms);
for (int j = 0; j < bmp.Height; j++)
for (int i = 0; i < bmp.Width; i++)
{
System.Drawing.Color color = bmp.GetPixel(i, j);
if (color.R != 255 || color.G != 255 || color.B != 255)
return false;
}
return true;
}
static private bool HasOnlyWhiteImages(Page page)
{
// return true if no images exist or all images are white
if (page.Resources.Images.Count == 0)
return true;
foreach (XImage image in page.Resources.Images)
if (!IsWhiteImage(image))
return false;
return true;
}
static private bool HasNoText(Page page)
{
var textabsorber = new
Aspose.Pdf.Text.TextAbsorber();
page.Accept(textabsorber);
string content = textabsorber.Text;
if (content.Trim().Length == 0)
return true;
return false;
}
static private bool IsBlankPage(Page page)
{
if ((page.Contents.Count == 0 && page.Annotations.Count == 0) || HasNoText(page) ||
(HasOnlyWhiteColor(page) && HasOnlyWhiteImages(page)))
return true;
return false;
}