ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

无法使用Imagemagick将PDF转换为C#中的任何图像格式

2019-11-08 06:05:30  阅读:373  来源: 互联网

标签:file-conversion imagemagick ghostscript c net


这是我的第一个问题,所以请不要对我苛刻:)无论如何,让我们开始吧:

对于应用程序,我需要将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(引发错误)

如果需要了解我在尝试什么,这里是我尝试编译的代码:

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是通过这种方式获得许可的,人们不会将其包含在包装器/小程序中.您需要确保您拥有dll.

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

另请注意,您也将需要适当的位数

标签:file-conversion,imagemagick,ghostscript,c,net
来源: https://codeday.me/bug/20191108/2006020.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有