网络上找了一堆博文,实验之后基本上很少能够有用的,很少能提供完整的Demo和Method,故写本篇文章来做记录。
1、新建项目UnitTestProject
2、右击项目==>>管理Nuget程序包==>Magick.NET-Q16-AnyCPU 安装最新版本7.14.5
High-Dynamic Range (HDR) image
注:Q8 Q16指HDRI分别表示8位 和16位,AnyCPU、x64、x86指计算机是32位还是64位系统,选择AnyCPU
3、下载安装ghostscript(根据所在服务器下载对应32还是64位版本)
http://ghostscript.com/download/gsdnld.html
如果不安装ghostscript,magick.net在执行Read函数读取pdf时会报错误.
4、加入以下方法,并添加引用 using ImageMagick;
/// <summary>
/// 将PDF所有页转换为图片并返回图片路径
/// </summary>
/// <param name="pdfPath">pdf文件路径</param>
/// <param name="imgPath">生成图片路径</param>
/// <param name="imgName">图片名称前缀</param>
public List<string> GetPdfAllPageImgs(string pdfPath, string imgPath, string imgName)
{
var list = new List<string>();
try
{
MagickReadSettings settings = new MagickReadSettings();
settings.Density = new Density(72, 72); //设置格式
using (MagickImageCollection images = new MagickImageCollection())
{
images.Read(pdfPath, settings);
int pageCount = images.Count;
for (int i = 0; i < pageCount; i++)
{
IMagickImage image = images[i];
image.Alpha(AlphaOption.Remove);//遇到电子签章的此属性可以解决黑屏问题
image.Format = MagickFormat.Jpeg;
string path = imgPath + $"{imgName}_{i}.jpg";//相对路径
image.Write(path);
list.Add(path);
}
}
}
catch (Exception ex)
{
}
return list;
}
5、在TestMethod方法中调用测试
[TestMethod]
public void TestMethod()
{
try
{
string filepath = @"D:\PDFFF\1565265812212742552810.pdf";
string imgpath = @"D:/PDFFF/";
var pathList= PdfHelper.GetPdfAllPageImgs(filepath, imgpath, "imgName");
}
catch (Exception ex)
{
}
}
6、右击TestMethod方法==>调试测试(注意打上断点)
请根据自己需要进行函数改写,本文只是示例,加入文件存储到云、文件检测等等
Demo地址(优快云好像不可以设置免费下载了。。。有点不清真啊)
https://download.youkuaiyun.com/download/uianqian/11926634
图像操作库 Magick.NET
ImageMagick 是一个很强大的图像操作库,支持超过100 种的文件格式。而 Magick.NET 可以让你在 .NET 环境中使用ImageMagick ,而无需在系统中单独安装 ImageMagick。
示例代码:
// Read first frame of gif image
using (MagickImage image = new MagickImage("Snakeware.gif"))
{
// Save frame as jpg
image.Write("Snakeware.jpg");
}
// Write to stream
MagickReadSettings settings = new MagickReadSettings();
// Tells the xc: reader the image to create should be 800x600
settings.Width = 800;
settings.Height = 600;
using (MemoryStream memStream = new MemoryStream())
{
// Create image that is completely purple and 800x600
using (MagickImage image = new MagickImage("xc:purple", settings))
{
// Sets the output format to png
image.Format = MagickFormat.Png;
// Write the image to the memorystream
image.Write(memStream);
}
}
// Read image from file
using (MagickImage image = new MagickImage("Snakeware.png"))
{
// Sets the output format to jpeg
image.Format = MagickFormat.Jpeg;
// Create byte array that contains a jpeg file
byte[] data = image.ToByteArray();
}
本文详细介绍了如何利用Magick.NET库将PDF文件转换为图片,包括项目创建、Nuget包安装、Ghostscript的下载与安装,以及关键代码示例。此外,还提供了调试测试的方法和注意事项,适用于.NET开发人员进行PDF处理。
1148

被折叠的 条评论
为什么被折叠?



