C#/VB.NET?實(shí)現(xiàn)彩色PDF轉(zhuǎn)為灰度PDF
本文以C#代碼為例介紹如何實(shí)現(xiàn)將彩色PDF文件轉(zhuǎn)為灰度(黑白)的PDF文件,即 將PDF文檔里面的彩色圖片或者文字等通過調(diào)用PdfGrayConverter.ToGrayPdf()方法轉(zhuǎn)為文檔頁面為灰色調(diào)、無彩色效果的文檔。下面的程序運(yùn)行環(huán)境及代碼示例。
配置程序環(huán)境
- Visual Studio 2017
- .Net Framework 4.6.1
- Spire.PDF for .NET
關(guān)于如何引入dll文件:
1.通過NuGet安裝dll(2種方法)
1.1可以在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“管理NuGet包”,然后搜索Spire.PDF安裝。
1.2將以下內(nèi)容復(fù)制到PM控制臺安裝。
Install-Package Spire.PDF -Version 7.11.1
2.手動添加dll引用
可通過手動下載包,然后解壓,找到BIN文件夾下的Spire.Pdf.dll。然后在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“添加引用”將本地路徑BIN文件夾下的dll文件添加引用至程序。
轉(zhuǎn)彩色PDF為灰度
這里轉(zhuǎn)換主要用到以下步驟:
1.使用 PdfGrayConverter 類加載PDF文件。
2.調(diào)用 PdfGrayConverter.ToGrayPdf() 方法將 PDF 轉(zhuǎn)換為灰度。
C#
using Spire.Pdf.Conversion; namespace ToGrayPDF { class Program { static void Main(string[] args) { //創(chuàng)建一個(gè)PdfGrayConverter實(shí)例并加載文檔 PdfGrayConverter converter = new PdfGrayConverter("sample.pdf"); //將彩色PDF轉(zhuǎn)換為灰度 converter.ToGrayPdf("Grayscale.pdf"); converter.Dispose(); } } }
VB.NET
Imports Spire.Pdf.Conversion Namespace ToGrayPDF Class Program Private Shared Sub Main(args As String()) '創(chuàng)建一個(gè)PdfGrayConverter實(shí)例并加載文檔 Dim converter As New PdfGrayConverter("sample.pdf") '將彩色PDF轉(zhuǎn)換為灰度 converter.ToGrayPdf("Grayscale.pdf") converter.Dispose() End Sub End Class End Namespace
轉(zhuǎn)換結(jié)果
補(bǔ)充
C#也可以實(shí)現(xiàn)彩色圖片轉(zhuǎn)換為灰度圖
代碼如下:
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; // 實(shí)際寬度與系統(tǒng)寬度的距離 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); // 轉(zhuǎn)換公式 p += 3; // 跳過3個(gè)字節(jié)處理下個(gè)像素點(diǎn) } p += nOffset; // 加上間隔 } } b.UnlockBits(bmData); // 解鎖 return b; }
到此這篇關(guān)于C#/VB.NET 實(shí)現(xiàn)彩色PDF轉(zhuǎn)為灰度PDF 的文章就介紹到這了,更多相關(guān)C#/VB.NET 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 字符串string和內(nèi)存流MemoryStream及比特?cái)?shù)組byte[]之間相互轉(zhuǎn)換
本文主要介紹字符串string和內(nèi)存流MemoryStream及比特?cái)?shù)組byte[]之間相互轉(zhuǎn)換的方法,需要的小伙伴可以參考一下。2016-05-05C#實(shí)現(xiàn)簡單點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡單點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07Winform中Treeview實(shí)現(xiàn)按需加載的方法
這篇文章主要介紹了Winform中Treeview實(shí)現(xiàn)按需加載的方法,針對大數(shù)據(jù)量的情況下非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10Windows服務(wù)編寫(Windows Service,system權(quán)限)程序顯示界面與用戶交互(xp,win7通用)
這篇文章主要介紹了Windows服務(wù)編寫Windows Service,system權(quán)限程序顯示界面與用戶交互(xp,win7通用) ,需要的朋友可以參考下2016-04-04一款域名監(jiān)控小工具 Domain(IP)Watcher 實(shí)現(xiàn)代碼
域名是否正常,網(wǎng)站是否可以正常訪問是很頭痛的問題,怎樣簡單地監(jiān)控域名是否可以正常訪問呢,這里發(fā)布一款域名監(jiān)控小工具:Domain(IP)Watcher2011-11-1110分鐘學(xué)會Visual Studio將自己創(chuàng)建的類庫打包到NuGet進(jìn)行引用(net,net core,C#)
這篇文章主要介紹了10分鐘學(xué)會Visual Studio將自己創(chuàng)建的類庫打包到NuGet進(jìn)行引用(net,net core,C#),本文給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09C# 啟動 SQL Server 服務(wù)的實(shí)例
下面小編就為大家分享一篇C# 啟動 SQL Server 服務(wù)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12