当前位置: 移动技术网 > IT编程>开发语言>.net > [那些年踩过的坑]pdf转换为图片的教程(pdf的Base64字符串转换为图片的base64字符串和不通过第三方来实现pdf转图片的Dome)

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

2018年11月29日  | 移动技术网IT编程  | 我要评论

国企美妇征途,波多野结衣照片,英文自我介绍

  因为工作需要,要把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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网