簡體   English   中英

無法使用Imagemagick將PDF轉換為C#中的任何圖像格式

[英]Unable to convert PDF to any Image format in C# With Imagemagick

這是我在這里的第一個問題所以請不要對我嚴厲:)無論如何,讓我們做對了:

對於應用程序,我需要將PDF文件轉換為圖像文件(特定格式無關緊要,但最好是png或jpg)。 為了完成這個,我嘗試使用ImageMagick但是當我嘗試轉換任何東西時,它會拋出一個錯誤。 現在經過一些研究后我得出結論我需要安裝Ghostscript,我試圖從Visual Studio 2017中集成的NuGet包管理器中獲取。無論如何,當我嘗試安裝所述包時,它會拋出以下錯誤:

嚴重級代碼說明項目文件行抑制>狀態錯誤無法添加對“gsdll32”的引用。 請確保該文件是可訪問的,並且它是有效的>程序集或COM組件。

我正在嘗試使用帶有C#的Visual Studio 2017來實現這一目標。 我正在使用的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以這種方式獲得許可,人們不會將其包含在包裝器/ nugets中。 你需要確保你有dll。

您通常必須下載它( gsdll32.dll ),將其添加到項目並將其輸出到您的輸出路徑(或任何類似的,如安裝它),以便您的應用程序可以找到gsdll32.dll並加載它。

另請注意,您還需要適當的位數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM