无法使用Imagemagick将PDF转换为C#格式的任何图像格式
这是我在这里的第一个问题,所以请不要对我太苛刻:)不管怎样,让我们开始吧: 对于应用程序,我需要将PDF文件转换为图像文件(具体格式不重要,但最好是png或jpg)。为了做到这一点,我尝试使用ImageMagick,但当我尝试转换任何内容时,它将抛出一个错误。 现在,经过一些研究,我得出结论,我需要安装Ghostscript,我试图从Visual Studio 2017中集成的NuGet软件包管理器中获得Ghostscript。无论如何,当我尝试安装上述软件包时,它会抛出以下错误: 严重性代码说明项目文件行抑制>状态 添加对“gsdll32”的引用时出错。 请确保该文件可访问,并且是有效的>程序集或COM组件 我正试图使用Visual Studio 2017和C#来实现这一点。我使用的API包括:无法使用Imagemagick将PDF转换为C#格式的任何图像格式,c#,.net,imagemagick,ghostscript,file-conversion,C#,.net,Imagemagick,Ghostscript,File Conversion,这是我在这里的第一个问题,所以请不要对我太苛刻:)不管怎样,让我们开始吧: 对于应用程序,我需要将PDF文件转换为图像文件(具体格式不重要,但最好是png或jpg)。为了做到这一点,我尝试使用ImageMagick,但当我尝试转换任何内容时,它将抛出一个错误。 现在,经过一些研究,我得出结论,我需要安装Ghostscript,我试图从Visual Studio 2017中集成的NuGet软件包管理器中获得Ghostscript。无论如何,当我尝试安装上述软件包时,它会抛出以下错误: 严重性代码说
+Magick.NET-Q16-AnyCPU V7.11.1
+GhostScriptSharp V1.3.1.4
+Ghostscript V9.2.0(抛出错误)
如果需要了解我正在尝试的内容,以下是我正在尝试编译的代码:
using ImageMagick.Configuration;
using ImageMagick.Defines;
using ImageMagick.ImageOptimizers;
using ImageMagick;
using GhostscriptSharp;
using GhostscriptSharp.Settings;
我是不是遗漏了一些关于GhostScipt安装的信息?它是否仅在直接从GhostScript网站下载时才起作用
我希望我已经为我的问题提供了足够的背景,我将期待着任何关于这个问题的答案
非常感谢
亲切问候,,
Melvin是的,GhostScript是以这样一种方式获得许可的,人们不会将其包含在包装器/NUGET中。你需要确保你有dll
通常,您必须下载它(gsdll32.dll
),将其添加到项目中,并将其输出到您的输出路径(或类似的内容,如安装),以便您的应用程序可以找到并加载gsdll32.dll
另外请注意,您还需要适当的咬合度谢谢您的快速回复。我现在已经直接下载了Ghostscript,它确实随gsdll32.dll一起提供。当我尝试将其添加为引用时(右键单击解决方案资源管理器中的引用并将其添加为引用),但这会引发与以前相同的错误。我对这一级别的编程相当陌生,所以在哪里可以找到这个输出路径?最后,对于bitness,我假设您是指x32、x64等?@MelvinWinthagen从将dll放在输出目录开始,看看如果输出目录是C:\Users\Melvin\source\repos\FactUrconVersionTest\FactUrconVersionTest\bin\Debug,是否正常,它仍然抛出相同的错误。我也尝试过下载x64版本,但这也会引发相同的错误。将它放入dll子文件夹也没有产生任何结果不幸的是快速更新:我发现了一个不同的api,它也提供了我需要的功能,所以我现在就使用它。但是谢谢你的时间!
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);
}