Chinaunix首页 | 论坛 | 博客
  • 博客访问: 423217
  • 博文数量: 62
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 578
  • 用 户 组: 普通用户
  • 注册时间: 2017-10-27 10:00
文章分类

全部博文(62)

文章存档

2019年(8)

2018年(45)

2017年(9)

我的朋友

分类: C#/.net

2018-12-14 11:59:59

PDF格式的文档广泛应用于电子图书、产品说明、公司文告、网络资料、电子邮件等各种领域和场合。我们工作和学习中可能会遇到需要在文档中新插入一页来添加相应内容,或者删除文档中多出的空白页的情况。本篇文章将介绍如何实现以上文档操作。

示例要点

1.添加PDF空白页

  1.1 在默认位置添加空白页(文档末)

  1.2 在指定位置添加空白页

2.删除多余的空白页

工具使用

这里示例中使用的是免费版的.NET PDF控件 Free Spire.PDF for .NET 4.3(添加dll引用时,可在安装路径下的Bin文件夹中获取dll文件)

测试文档截图(文档包含两页内容):

1.添加PDF空白页

1.1 在默认位置,即文档末插入一张空白页

  1. //创建PDF文档1,并加载测试文档
  2. PdfDocument doc1 = new PdfDocument();
  3. doc1.LoadFromFile("sample.pdf");

  4. //添加一页空白页到文档(默认在文档最后一页添加)
  5. doc1.Pages.Add();
  6. //保存并打开文档
  7. doc1.SaveToFile("result1.pdf");
  8. System.Diagnostics.Process.Start("result1.pdf");

测试结果:


1.2 在指定位置插入空白页


  1. //创建文档2,加载测试文档
  2. PdfDocument doc2 = new PdfDocument();
  3. doc2.LoadFromFile("sample.pdf");

  4. //添加一页空白页作为第2页
  5. doc2.Pages.Insert(1);

  6. //保存并打开文档
  7. doc2.SaveToFile("result2.pdf");
  8. System.Diagnostics.Process.Start("result2.pdf");

测试结果:


2. 删除PDF空白页

这里的测试文档中,包含了两页空白页,一页空白页是没有任何内容的;另一页空白页是包含了空白图片的页面,看似没有内容,但是这样的页面实际上也是不需要的。





  1. using Spire.Pdf;
  2. using System.Drawing;
  3. using Spire.Pdf.Graphics;

  4. namespace DeleteBlankPage_PDF
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             //应用许可证
  11.             Spire.License.LicenseProvider.SetLicenseFileName("license.elic.xml");

  12.             //创建PdfDocument类对象,并加载PDF文档
  13.             PdfDocument document = new PdfDocument();
  14.             document.LoadFromFile("Test.pdf");

  15.             //遍历文档中所有页面
  16.             for (int i = document.Pages.Count - 1; i >= 0; i--)
  17.             {
  18.                 //诊断页面是否为空白页
  19.                 if (document.Pages[i].IsBlank())
  20.                 {
  21.                     //删除空白页
  22.                     document.Pages.RemoveAt(i);
  23.                 }
  24.                 else
  25.                 {
  26.                     //将PDF页转换为Bitmap图像
  27.                     Image image = document.SaveAsImage(i, PdfImageType.Bitmap);

  28.                     //诊断图片是否为空白图片
  29.                     if (IsImageBlank(image))
  30.                     {
  31.                         //移除包含空白图片的页面
  32.                         document.Pages.RemoveAt(i);
  33.                     }
  34.                 }
  35.             }

  36.             //保存并打开文档
  37.             document.SaveToFile("RemoveBlankPage.pdf", FileFormat.PDF);
  38.             System.Diagnostics.Process.Start("RemoveBlankPage.pdf");
  39.         }

  40.         //自定义方法IsImageBlank()诊断图片是否为空白图片
  41.         public static bool IsImageBlank(Image image)
  42.         {
  43.             //初始化Bitmap类实例,遍历文档中所有图片
  44.             Bitmap bitmap = new Bitmap(image);
  45.             for (int i = 0; i < bitmap.Width; i++)
  46.             {
  47.                 for (int j = 0; j < bitmap.Height; j++)
  48.                 {
  49.                     Color pixel = bitmap.GetPixel(i, j);
  50.                     if (pixel.R < 240 || pixel.G < 240 || pixel.B < 240)
  51.                     {
  52.                         return false;
  53.                     }
  54.                 }
  55.             }
  56.             return true;
  57.         }
  58.     }
  59. }

测试结果:



(本文完)

阅读(1214) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册