首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用Imagemagick在C#中将PDF转换成任何图像格式

无法用Imagemagick在C#中将PDF转换成任何图像格式
EN

Stack Overflow用户
提问于 2019-03-26 08:24:30
回答 1查看 585关注 0票数 3

这是我在这里的第一个问题,所以请不要对我太苛刻:)无论如何,让我们直截了当地说:

对于应用程序,我需要将PDF文件转换为Image文件(特定格式并不重要,但最好是png或jpg)。为了完成这个任务,我尝试使用ImageMagick,但是当我试图转换任何东西时,它会抛出一个错误。现在,经过一些研究,我得出了我需要安装Ghostscript的结论,我试图从VisualStudio2017集成的NuGet包管理器中获得它。无论如何,当我试图安装上述软件包时,它会引发以下错误:

严重性代码描述项目文件行抑制>状态错误未能添加对“gsdll32 32”的引用。请确保该文件是可访问的,并且它是有效的>程序集或COM组件。

我正在尝试使用VisualStudio2017和C#来完成这一任务。我使用的API是:+Magick.NET-Q16-AnyCPU V7.11.1 +GhostScriptSharp V1.3.1.4 +Ghostscript V9.2.0 (Throws error)

如果需要理解我正在尝试的内容,下面是我要编译的代码:

代码语言:javascript
复制
using ImageMagick.Configuration;
using ImageMagick.Defines;
using ImageMagick.ImageOptimizers;
using ImageMagick;

using GhostscriptSharp;
using GhostscriptSharp.Settings;
代码语言:javascript
复制
        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网站下载时才起作用?

我希望我已经为我的问题提供了足够的背景,我期待着任何我可能得到的答案。

非常感谢!!

你好,梅尔文

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-26 08:29:40

是的,GhostScript是以这样的方式获得许可的,人们不会将它包含在包装器/nugets中。你需要确保你有dll。

您通常需要下载它(gsdll32.dll),将其添加到项目中,并将其输出到您的输出路径(或任何类似的东西,如安装),以便应用程序能够找到gsdll32.dll并加载它。

还请注意,您还需要适当的bitness。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55352673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档