[那些年踩过的坑]pdf转换为图片的教程(pdf的Base64字符串转换为图片的base64字符串和不通过第三方来实现pdf转图片的Dome)

时间:2020-12-10 21:48:31

  因为工作需要,要把PDF的64字符串转换为图片的base64保存到数据库,但是看了看国内外,一方面是做这个的比较少,还有就是做这个真的很烦.

  PDF转图片呢,大概的实现思路方式一般有两种,一种就是重绘,类似于画画,把看到的画到新的画布上;第二种呢,就会识别里面的内容复制到新的画布上,我也不知道我比喻准不准,无所谓了,因为今天不做这个.

  在国内,做这个的发现很少,pdf在中国真的很不流行,没办法,为了完成任务,干呗.

  百度PDF转图片,出来一大堆,但是可以用的真的很少,尤其是教程,很少很少,而且大部分都是通过第三方来实现的,所以就有了Spire.PDF、O2S.Components等盗版的DLL(因为本有有着“提高全民意识,保护知识产权”的21世纪三号青年的觉悟,所有不推荐大家这么做)

下面先贴个代码

  尊重国产品牌,先来演示个国产软件Spire.Pdf的转换

先引用 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转换为png,转换其他格式也是可以的,注意的是pdf.SaveAsImage(0, 400, 400)函数中,第一个参数是要转换的页数,第二个和第三个是清晰度哇,数字越大,转换效果越好,最大400,其他了,看起来应该不难,应该都能看懂,要是直接pdf文件转图片文件,那就更简单了,直接保存就好,不需要读取base64了

  请大家支持国产,支持原创 官网地址(https://www.e-iceblue.com/)

 

下面这个是O2S.Components PDF转图片,外国的,效果没有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);

通过第三方的转大概就是个这,用其他的也差不多,但是都是收费的,经过若干天的折磨,终于有了个新的方案,领导不想花钱,没办法,自己实现绘图呗

注意,在项目运行的时候需要把gsdll32.dll放在\ConvertToImage\bin\Debug下面哦

由于代码量众多,自己下载观看去吧,都有注释,哈哈哈哈

https://pan.baidu.com/s/1WxsQ_tCnVHHp0-JmTaivtA