本人是長沙軟件開發(fā)公司簡界程序員小伍,因為工作需要,要把PDF的64字符串轉(zhuǎn)換為圖片的base64保存到數(shù)據(jù)庫,但是看了看國內(nèi)外,一方面是做這個的比較少,還有就是做這個真的很煩.
PDF轉(zhuǎn)圖片呢,大概的實現(xiàn)思路方式一般有兩種,一種就是重繪,類似于畫畫,把看到的畫到新的畫布上;第二種呢,就會識別里面的內(nèi)容復制到新的畫布上,我也不知道我比喻準不準,無所謂了,因為今天不做這個.
在國內(nèi),做這個的發(fā)現(xiàn)很少,pdf在中國真的很不流行,沒辦法,為了完成任務(wù),干唄.
百度PDF轉(zhuǎn)圖片,出來一大堆,但是可以用的真的很少,尤其是教程,很少很少,而且大部分都是通過第三方來實現(xiàn)的,所以就有了Spire.PDF、O2S.Components等盜版的DLL(因為本有有著“提高全民意識,保護知識產(chǎn)權(quán)”的21世紀三號青年的覺悟,所有不推薦大家這么做)
下面先貼個代碼
尊重國產(chǎn)品牌,先來演示個國產(chǎn)軟件Spire.Pdf的轉(zhuǎn)換
先引用 Spire.Pdf Spire.Pdf下載地址 : https://www.e-iceblue.com/Download/download-pdf-for-net-now.html
string base64 ="";//這里是pdfBase64字符串
byte[] pdfByte = Convert.FromBase64String(base64);
PdfDocument pdf = new PdfDocument(pdfByte);
Image img = pdf.SaveAsImage(0, 400, 400);
Bitmap bmp = new Bitmap(img);
MemoryStream strem = new MemoryStream();
bmp.Save(strem, ImageFormat.Png);
byte[] data = new byte[strem.Length];
strem.Seek(0, SeekOrigin.Begin);
strem.Read(data, 0, Convert.ToInt32(strem.Length));
var pngBase64 = Convert.ToBase64String(data);
在這里我是將PDF轉(zhuǎn)換為png,轉(zhuǎn)換其他格式也是可以的,注意的是pdf.SaveAsImage(0, 400, 400)函數(shù)中,第一個參數(shù)是要轉(zhuǎn)換的頁數(shù),第二個和第三個是清晰度哇,數(shù)字越大,轉(zhuǎn)換效果越好,最大400,其他了,看起來應該不難,應該都能看懂,要是直接pdf文件轉(zhuǎn)圖片文件,那就更簡單了,直接保存就好,不需要讀取base64了
請大家支持國產(chǎn),支持原創(chuàng) 官網(wǎng)地址(https://www.e-iceblue.com/)
下面這個是O2S.Components PDF轉(zhuǎn)圖片,外國的,效果沒有Spire.Pdf好
O2S.Components.PDFRender4NET 程序集文件下載地址(盜版的,沒有水印)下載地址:https://pan.baidu.com/s/1wMcmFzBic2e_0VjY66zdFg
貼個代碼自己看吧
需要引用O2S.Components.PDFRender4NET;
string base64 ="";//這里是pdfBase64字符串
byte[] pdfByte = Convert.FromBase64String(base64);
MemoryStream stream = new MemoryStream(pdfByte);
PDFFile pdfFile = PDFFile.Open(stream);
Bitmap pageImage = pdfFile.GetPageImage(0, 2000);
MemoryStream strem = new MemoryStream();
pageImage.Save(strem, ImageFormat.Png);
byte[] data = new byte[strem.Length];
strem.Seek(0, SeekOrigin.Begin);
strem.Read(data, 0, Convert.ToInt32(strem.Length));
string result = Convert.ToBase64String(data);
通過第三方的轉(zhuǎn)大概就是個這,用其他的也差不多,但是都是收費的,經(jīng)過若干天的折磨,終于有了個新的方案.
注意,在項目運行的時候需要把gsdll32.dll放在\ConvertToImage\bin\Debug下面哦
——本文并非原創(chuàng),如有侵權(quán)請聯(lián)系管理員刪除。