You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.9 KiB
52 lines
1.9 KiB
using Spire.Pdf;
|
|
using System;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace ShenTun.Ecg.Common
|
|
{
|
|
public class PdfHelper
|
|
{
|
|
/// <summary>
|
|
/// 将pdf文件转换为图片文件
|
|
/// </summary>
|
|
/// <param name="stream">pdf文件流</param>
|
|
/// <param name="pageIndex">要转换的pdf页索引(从0开始)</param>
|
|
/// <param name="dpiX">dpi</param>
|
|
/// <param name="dpiY">dpi</param>
|
|
/// <param name="mimeType">mime类型</param>
|
|
/// <returns></returns>
|
|
public static Stream PdfToImage(Stream stream, int pageIndex = 0, int dpiX = 300, int dpiY = 300, string mimeType = "image/jpg")
|
|
{
|
|
using (PdfDocument document = new PdfDocument())
|
|
{
|
|
document.LoadFromStream(stream);
|
|
|
|
// 图片类型选择为Bitmap
|
|
Spire.Pdf.Graphics.PdfImageType pdfImageType = Spire.Pdf.Graphics.PdfImageType.Bitmap;
|
|
// 将pdf中指定的页码转换为图片对象并返回
|
|
using (Image image = document.SaveAsImage(pageIndex, pdfImageType, dpiX, dpiY))
|
|
{
|
|
// 获取相应的编码器
|
|
ImageCodecInfo codecInfo = (
|
|
from item in ImageCodecInfo.GetImageEncoders()
|
|
where mimeType.Equals(item.MimeType)
|
|
select item
|
|
).FirstOrDefault();
|
|
|
|
EncoderParameters encoderParams = new EncoderParameters(1);
|
|
encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
|
|
|
|
|
|
MemoryStream result = new MemoryStream();
|
|
image.Save(result, codecInfo, encoderParams);
|
|
result.Position = 0;
|
|
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|