gpt4 book ai didi

c# - 使用 ImageMagick.NET 将 PDF 转换为图像 - 如何设置 DPI

转载 作者:太空狗 更新时间:2023-10-29 20:37:54 24 4
gpt4 key购买 nike

我正在尝试将 pdf 文件转换为图像。ImageMagick 是一个很棒的工具,使用命令行工具可以获得我想要的结果。

但我需要在我的代码中这样做,所以添加了对 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;
}
}

问题:它看起来像废话渲染图像几乎不可读。我意识到的问题是它使用 ImageMagick 的默认 72 DPI。我找不到通过 .Net 包装器设置它的方法(96dpi 或 120dpi 给出了很好的结果)。

我是不是遗漏了什么,或者真的没有办法通过这个包装器来设置它?

谢谢

最佳答案

我对此进行了简要调查。

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#包装器应该包含一个 .NET 异常类来表示 ImageMagick 错误。

关于c# - 使用 ImageMagick.NET 将 PDF 转换为图像 - 如何设置 DPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com