无法使用 Imagemagick 在 C# 中将 PDF 转换为任何图像格式
Unable to convert PDF to any Image format in C# With Imagemagick
这是我的第一个问题所以请不要对我太苛刻 :) 不管怎样,让我们开始吧:
对于一个应用程序,我需要将 PDF 文件转换为图像文件(具体格式无关紧要,但最好是 png 或 jpg)。为此,我尝试使用 ImageMagick,但当我尝试转换任何内容时,它会抛出错误。
现在经过一些研究,我得出的结论是我需要安装 Ghostscript,我试图从 Visual Studio 2017 中集成的 NuGet 包管理器中获取它。无论如何,当我尝试安装所述包时,它会抛出以下错误:
Severity Code Description Project File Line Suppression >State
Error Failed to add reference to 'gsdll32'.
Please make sure that the file is accessible, and that it is a valid >assembly or COM component.
我正在尝试使用 Visual Studio 2017 和 C# 来完成此操作。我使用的 API 是:
+Magick.NET-Q16-AnyCPU V7.11.1
+GhostScriptSharp V1.3.1.4
+Ghostscript V9.2.0 (Throws error)
如果需要了解我正在尝试的内容,这里是我正在尝试编译的代码:
using ImageMagick.Configuration;
using ImageMagick.Defines;
using ImageMagick.ImageOptimizers;
using ImageMagick;
using GhostscriptSharp;
using GhostscriptSharp.Settings;
public MagickImageCollection PDFOutput;
public Image Current;
public org.pdfclown.documents.Page CurrentPage;
private void BtnConvert_Click(object sender, EventArgs e)
{
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
ImageMagick.MagickNET.Initialize();
MagickReadSettings Settings = new MagickReadSettings();
Settings.Density = new Density(300, 300);
Settings.Format = MagickFormat.Jpg;
using (MagickImageCollection Images = new MagickImageCollection())
{
Images.Add(openFileDialog1.FileName);
int Page = 1;
int i = 0;
foreach(MagickImage Image in Images)
{
Image.Write("FilePage #" + Page);
PDFOutput[i] = Image;
Page++;
i++;
}
MessageBox.Show(PDFOutput.Count.ToString());
}
}
catch(Exception E)
{
MessageBox.Show(E.Message);
}
我是否遗漏了有关 GhostScipt 安装的信息?只有直接从 GhostScript 网站下载才有效吗?
我希望我已经为我的问题提供了足够的背景信息,我期待着我可能得到的任何答案。
非常感谢!!
亲切的问候,
梅尔文
是 GhostScript 的授权方式是人们不会将其包含在他们的 wrappers/nugets 中。你需要确保你有dll。
您通常必须下载它 (gsdll32.dll
),将它添加到项目中并将它输出到您的输出路径(或任何类似的东西,例如安装它)以便您的应用程序可以找到 gsdll32.dll
并加载它。
另请注意,您还需要适当的位数
这是我的第一个问题所以请不要对我太苛刻 :) 不管怎样,让我们开始吧:
对于一个应用程序,我需要将 PDF 文件转换为图像文件(具体格式无关紧要,但最好是 png 或 jpg)。为此,我尝试使用 ImageMagick,但当我尝试转换任何内容时,它会抛出错误。 现在经过一些研究,我得出的结论是我需要安装 Ghostscript,我试图从 Visual Studio 2017 中集成的 NuGet 包管理器中获取它。无论如何,当我尝试安装所述包时,它会抛出以下错误:
Severity Code Description Project File Line Suppression >State Error Failed to add reference to 'gsdll32'. Please make sure that the file is accessible, and that it is a valid >assembly or COM component.
我正在尝试使用 Visual Studio 2017 和 C# 来完成此操作。我使用的 API 是:
+Magick.NET-Q16-AnyCPU V7.11.1
+GhostScriptSharp V1.3.1.4
+Ghostscript V9.2.0 (Throws error)
如果需要了解我正在尝试的内容,这里是我正在尝试编译的代码:
using ImageMagick.Configuration;
using ImageMagick.Defines;
using ImageMagick.ImageOptimizers;
using ImageMagick;
using GhostscriptSharp;
using GhostscriptSharp.Settings;
public MagickImageCollection PDFOutput;
public Image Current;
public org.pdfclown.documents.Page CurrentPage;
private void BtnConvert_Click(object sender, EventArgs e)
{
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
ImageMagick.MagickNET.Initialize();
MagickReadSettings Settings = new MagickReadSettings();
Settings.Density = new Density(300, 300);
Settings.Format = MagickFormat.Jpg;
using (MagickImageCollection Images = new MagickImageCollection())
{
Images.Add(openFileDialog1.FileName);
int Page = 1;
int i = 0;
foreach(MagickImage Image in Images)
{
Image.Write("FilePage #" + Page);
PDFOutput[i] = Image;
Page++;
i++;
}
MessageBox.Show(PDFOutput.Count.ToString());
}
}
catch(Exception E)
{
MessageBox.Show(E.Message);
}
我是否遗漏了有关 GhostScipt 安装的信息?只有直接从 GhostScript 网站下载才有效吗?
我希望我已经为我的问题提供了足够的背景信息,我期待着我可能得到的任何答案。
非常感谢!!
亲切的问候, 梅尔文
是 GhostScript 的授权方式是人们不会将其包含在他们的 wrappers/nugets 中。你需要确保你有dll。
您通常必须下载它 (gsdll32.dll
),将它添加到项目中并将它输出到您的输出路径(或任何类似的东西,例如安装它)以便您的应用程序可以找到 gsdll32.dll
并加载它。
另请注意,您还需要适当的位数