PDF文档是一种支持特长文件,集成度和安全可靠性都较高的文件格式,在各个领域都应用广泛。在处理PDF文档时,常常也会遇到包含很多图片的PDF文档,这样的文档会占用比较大的空间,而且在文件传输时也确实会耗费不少时间。解决办法之一就是将文档中的图片进行压缩,使文档变小。这里推荐两种压缩PDF文档图片的方法。方法中用到了组件Spire.PDF for .NET.(转载自博客http://www.cnblogs.com/Yesi/p/7928947.html)
?
方法一??
class="c#" name="code">using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.Graphics;
using Spire.Pdf.Exporting;
namespace CompressImage_PDF
{
class Program
{
static void Main(string[] args)
{
//初始化一个PdfDocument类实例并加载一个pdf文档
PdfDocument doc = new PdfDocument(@"C:\Users\Administrator\Desktop\Input.pdf");
//禁用增量更新
doc.FileInfo.IncrementalUpdate = false;
//遍历PDF所有页,诊断是否包含图片
foreach (PdfPageBase page in doc.Pages)
{
if (page != null)
{
if (page.ImagesInfo != null)
{
foreach (PdfImageInfo info in page.ImagesInfo)
{
//调用方法TryCompressImage()压缩图片
page.TryCompressImage(info.Index);
}
}
}
}
//保存文档
doc.SaveToFile("Output.pdf");
?
?
方法二
?
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.Graphics;
namespace CompressImage_PDF
{
class Program
{
static void Main(string[] args)
{
//初始化一个PdfDocument类实例并加载一个pdf文档
PdfDocument doc = new PdfDocument(@"C:\Users\Administrator\Desktop\Input.pdf");
//禁用增量更新
doc.FileInfo.IncrementalUpdate = false;
//遍历所有PDF页,提取图片
foreach (PdfPageBase page in doc.Pages)
{
Image[] images = page.ExtractImages();
//遍历所有图片
if (images != null && images.Length > 0)
{
for (int j = 0; j < images.Length; j++)
{
Image image = images[j];
PdfBitmap bp = new PdfBitmap(image);
//设置bp.Quality值,压缩图片
bp.Quality = 20;
//将压缩后的图片替换原有图片
page.ReplaceImage(j, bp);
}
}
}
//保存文档
doc.SaveToFile("Output2.pdf");
}
}
}
?
?
?