服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#/VB.NET 实现彩色PDF转为灰度PDF

C#/VB.NET 实现彩色PDF转为灰度PDF

2022-12-12 11:28E-iceblue C#

本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即将PDF文档里面的彩色图片或者文字等通过调用方法转为文档页面为灰色调、无彩色效果的文档。快来跟随小编一起学习吧

本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即 将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.ToGrayPdf()方法转为文档页面为灰色调、无彩色效果的文档。下面的程序运行环境及代码示例。

配置程序环境

  • Visual Studio 2017
  • .Net Framework 4.6.1
  • Spire.PDF for .NET

关于如何引入dll文件:

1.通过NuGet安装dll(2种方法)

1.1可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索Spire.PDF安装。

1.2将以下内容复制到PM控制台安装。

Install-Package Spire.PDF -Version 7.11.1

2.手动添加dll引用

可通过手动下载包,然后解压,找到BIN文件夹下的Spire.Pdf.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”将本地路径BIN文件夹下的dll文件添加引用至程序。

转彩色PDF为灰度

这里转换主要用到以下步骤:

1.使用 PdfGrayConverter 类加载PDF文件。

2.调用 PdfGrayConverter.ToGrayPdf() 方法将 PDF 转换为灰度。

C#

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using Spire.Pdf.Conversion;
 
namespace ToGrayPDF
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个PdfGrayConverter实例并加载文档
            PdfGrayConverter converter = new PdfGrayConverter("sample.pdf");
 
            //将彩色PDF转换为灰度
            converter.ToGrayPdf("Grayscale.pdf");
            converter.Dispose();
        }
    }
}

VB.NET

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Imports Spire.Pdf.Conversion
 
Namespace ToGrayPDF
    Class Program
        Private Shared Sub Main(args As String())
            '创建一个PdfGrayConverter实例并加载文档
            Dim converter As New PdfGrayConverter("sample.pdf")
 
            '将彩色PDF转换为灰度
            converter.ToGrayPdf("Grayscale.pdf")
            converter.Dispose()
        End Sub
    End Class
End Namespace

转换结果

C#/VB.NET 实现彩色PDF转为灰度PDF

补充

C#也可以实现彩色图片转换为灰度图

代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public static Bitmap ChangeGray(Bitmap b)
 {
  BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite,
   PixelFormat.Format24bppRgb);
  int stride = bmData.Stride;   // 扫描的宽度
   
   
  unsafe
  {
   byte* p = (byte*)bmData.Scan0.ToPointer(); // 获取图像首地址
   int nOffset = stride - b.Width * 3;  // 实际宽度与系统宽度的距离
   byte red, green, blue;
   for (int y = 0; y < b.Height; ++y)
   {
    for (int x = 0; x < b.Width; ++x)
    {
     blue = p[0];
     green = p[1];
     red = p[2];
   
     p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114 * blue); // 转换公式
     p += 3;  // 跳过3个字节处理下个像素点
    }
    p += nOffset; // 加上间隔
   }
  }
  b.UnlockBits(bmData); // 解锁
  return b;
 }

到此这篇关于C#/VB.NET 实现彩色PDF转为灰度PDF 的文章就介绍到这了,更多相关C#/VB.NET 内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/Yesi/archive/2021/11/25/15602561.html

延伸 · 阅读

精彩推荐
  • C#关于C#数强转会不会抛出异常详解

    关于C#数强转会不会抛出异常详解

    这篇文章主要给大家介绍了关于C#数强转会不会抛出异常的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    lindexi7092022-02-22
  • C#C#中的静态成员、静态方法、静态类介绍

    C#中的静态成员、静态方法、静态类介绍

    本文主要介绍了C#中的静态成员、静态方法、静态类的基础的使用,并做了相关的代码演示,供初学者参考。...

    暴走抹茶moukoy4892021-11-16
  • C#C# 9.0 特性全面总结

    C# 9.0 特性全面总结

    这篇文章主要介绍了C# 9.0 特性的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...

    张志敏9672022-11-02
  • C#全面分析c# LINQ

    全面分析c# LINQ

    这篇文章主要介绍了c# LINQ的相关资料,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...

    精致码农 • 王亮9432022-10-08
  • C#C# 中 Array和 ArrayList详解及区别

    C# 中 Array和 ArrayList详解及区别

    这篇文章主要介绍了C# 中 Array和 ArrayList详解及区别的相关资料,需要的朋友可以参考下...

    C#教程网5912021-12-20
  • C#如何实现定时推送的具体方案

    如何实现定时推送的具体方案

    在工作当中遇到了一个需要定时向客户端推送新闻、文章等内容。小项目又用不了大框架,这个时候在网上搜了很久没有找到合适的解决方案,直到看到了一...

    dotNet源计划4422022-11-15
  • C#英语单词state与status的区别

    英语单词state与status的区别

    state倾向于condition,是一种延续性的状态。status常用于描述一个过程中的某阶段(phase),类似于C语言中枚举型变量某一个固定的值,这个值属于一个已知...

    likebeta8572021-12-09
  • C#c# 使用Entity Framework操作Access数据库的示例

    c# 使用Entity Framework操作Access数据库的示例

    本篇文章主要介绍了c# 使用Entity Framework操作Access数据库的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Touchumind10402022-02-10