/// <summary>
/// 转换的图片清晰度,1最不清醒,10最清晰
/// </summary>
public enum Definition
{
One = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10
}
/// 将1个PDF文档所有页全部转换为图片
/// <param name="imageFormat">设置所需图片格式</param>
/// <param name="definition">设置图片的清晰度,数字越大越清晰</param>
public static byte[] PdfToImgForFileId(int FileId,
ImageFormat imageFormat, Definition definition)
{
//根据图片获取文件对象
tbl_File_Info document = tbl_File_Info.GetBytesInfoForid(FileId);
//定义pdf流
MemoryStream pdfmsinfo = new MemoryStream();
//获取流文件
pdfmsinfo.Write(document.FILE_STREAM, 0, document.FILE_STREAM.Length);
//打开pdf文件
PDFFile pdfFile = PDFFile.Open(pdfmsinfo);
int startPageNum = 1;
int endPageNum = pdfFile.PageCount;
//定义合并图片对象集合
List<Bitmap> bitMapList = new List<Bitmap>();
//获取第一张pdf图片信息
Bitmap pageImage = pdfFile.GetPageImage(0, 56 * (int)definition);
int canKao = pageImage.Width > pageImage.Height ? pageImage.Height : pageImage.Width;
//高度
int newHeight = canKao > 1080 ? pageImage.Height / 2 : pageImage.Height;
//宽度
int newWidth = canKao > 1080 ? pageImage.Width / 2 : pageImage.Width;
//创建要显示的图片对象,根据参数的个数设置宽度(整体大图)
Bitmap backgroudImg = new Bitmap(newWidth, endPageNum * newHeight);
//整体大图绘画工具
Graphics bitgraphics = Graphics.FromImage(backgroudImg);
//清除画布,背景设置为白色
//bitgraphics.Clear(System.Drawing.Color.White);
for (int i = startPageNum; i <= endPageNum; i++)
{
try
{
if (i > 1)
{
//获取对应页面的pdf文件
pageImage = pdfFile.GetPageImage(i - 1, 56 * (int)definition);
}
//将子图图片绘画到 大图中
bitgraphics.DrawImage(pageImage, 0, (i - 1) * newHeight, newWidth, newHeight);
pageImage.Dispose();
}
catch (Exception ex)
{
}
}
MemoryStream imgmsinfo = new MemoryStream();
backgroudImg.Save(imgmsinfo, imageFormat);
//整体大图绘画释放
bitgraphics.Dispose();
//pdf文件释放
pdfFile.Dispose();
return imgmsinfo.ToArray();
}
引用Dll: O2S.Components.PDFRender4NET.dll
引用参考链接:https://blog.csdn.net/tearsek/article/details/49680465