使用ImageMagick.NET将PDF转换为图像 - 如何设置DPI
我试图将PDF文件转换为图像。 ImageMagick是一款出色的工具,使用命令行工具可以获得理想的效果。使用ImageMagick.NET将PDF转换为图像 - 如何设置DPI
,但我必须这样做在我的代码, 于是增加了一个参考http://imagemagick.codeplex.com/ 而下面的代码示例呈现PDF的每一页的图像:
MagickNet.InitializeMagick();
using (ImageList im = new ImageList())
{
im.ReadImages(@"E:\Test\" + fileName + ".pdf");
int count = 0;
foreach (Image image in im)
{
image.Quality = 100;
image.CompressType = mageMagickNET.CompressionType.LosslessJPEGCompression;
image.Write(@"E:\Test\" + fileName + "-" + count.ToString() + ".jpg");
++count;
}
}
问题:IT看起来像CRAP 渲染的图像几乎不可读。 我意识到的问题是它使用ImageMagick的默认72 DPI。 ,我无法找到一种方法来设置它(96dpi或120dpi提供良好的结果)通过.net包装。
我错过了什么,或者真的没有办法通过这个包装来设置它?
谢谢
我对此进行了简单的介绍。
Image.Resolution
属性可用于设置PDF呈现分辨率,但该属性未由ImageMagick.NET包装器公开。
将缺少的属性添加到Image类非常简单。
Index: ImageMagickNET/Image.h
===================================================================
--- ImageMagickNET/Image.h (revision 59374)
+++ ImageMagickNET/Image.h (working copy)
@@ -532,6 +532,13 @@
}
+ // Vertical and horizontal resolution in pixels of the image.
+ property Geometry^ Density
+ {
+ void set(Geometry^);
+ }
+
+
//----------------------------------------------------------------
// IO
//----------------------------------------------------------------
Index: ImageMagickNET/Image.cpp
===================================================================
--- ImageMagickNET/Image.cpp (revision 59374)
+++ ImageMagickNET/Image.cpp (working copy)
@@ -1099,5 +1099,9 @@
return bitmap;
}
+ void Image::Density::set(Geometry^ density_)
+ {
+ image->density(*(density_->geometry));
+ }
}
遗憾的是,似乎a bug阻止我们设置渲染质量,同时通过PDF页面迭代,你正在试图做的事。
另一种选择是单独打开每个页面:
Image image = new Image();
image.Density = new Geometry("1000"); // 1000 dpi
image.Read(@"C:\u\test.pdf[2]"); // Open the 3rd page, index 0 is the first
如果页码超出范围,你得到一个原料 C++异常。虽然you can catch it in C#包装应该可能包含用于表示ImageMagick错误的异常类。
感谢您看这个, 试图编译源代码,如在HTTP发布:// WWW (在http://imagemagick.codeplex.com/找不到源代码...可能丢失了一些东西) 我正在使用框架4.0,而原始版本包装是2.0写的,似乎我做了错误,因为它编译,但有一个运行时错误ouch .. 所以寻找另一种解决方案(不介意支付一个很好的解决方案) 找到两个 1。 Aspose.pdf.kit非常非常缓慢和昂贵 2. O2solutions pdfview4net - 快速和可避免:-) – 2010-05-29 10:48:07
无法在Codeplex上找到ImageMagick.NET的源代码压缩包。我不得不从源代码控制中检出代码......如果你仍然在寻找替代品,我建议你考虑使用[Ghostscript](http://ghostscript.com/)或[Poppler](http:// poppler.freedesktop.org/)库直接。这是两个流行的开源PDF渲染库。不知道.NET包装器是否可用。 – 2010-05-29 15:34:10
最终我用O2solutions pdfview4net - 快速且经济实惠 – 2012-12-30 17:25:36
http://www.o2sol.com/pdfview4net/overview.htm – 2012-12-31 08:32:11