Я кратко рассмотрел это.
Свойство 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));
+ }
}
К сожалению, похоже, что ошибка не позволяет нам устанавливать качество рендеринга при выполнении итерации по страницам 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
Если номер страницы выходит за пределы диапазона, вы получаете исключение raw C ++.В то время как вы можете перехватить его в C # , оболочка, вероятно, должна включать класс исключений .NET для представления ошибок ImageMagick.