GhostscriptRasterizer Objects Возвращает 0 в качестве значения PageCount - PullRequest
2 голосов
/ 19 мая 2019
            txtStatus.Text = "";
            if (!File.Exists(txtOpenLocation.Text))
            {
                txtStatus.Text = "File Not Found";
                return;
            }

            txtStatus.Text = "File Found";



            const string DLL_32BITS = "gsdll32.dll";
            const string DLL_64BITS = "gsdll64.dll";

            //select DLL based on arch
            string NomeGhostscriptDLL;
            if (Environment.Is64BitProcess)
            {
                NomeGhostscriptDLL = DLL_64BITS;
            }
            else
            {
                NomeGhostscriptDLL = DLL_32BITS;
            }




            GhostscriptVersionInfo gvi = new GhostscriptVersionInfo(NomeGhostscriptDLL);
            var rasterizer = new GhostscriptRasterizer();
            try
            {              
                rasterizer.Open(txtOpenLocation.Text, gvi, true);

                Console.WriteLine(rasterizer.PageCount); //This line always prints 0
            } catch(Exception er)
            {
                txtStatus.AppendText("\r\nUnable to Load the File: "+ er.ToString());
                return;
            }

Я гуглил по нему, но не нашел решения и никакой полезной документации о функции rasterizer.Open ().

Console.WriteLine(rasterizer.PageCount); всегда печатает 0, независимо от того, какой файл PDF я загружаю.

txtStatus - многострочный TextBox в пользовательском интерфейсе. txtOpenLocation - это еще один TextBox в пользовательском интерфейсе, который не редактируется пользователем, и его значение устанавливается OpenFileDialog.

Я использую Visual Studio 2019 Community Edition.

Еще одно замечание, о котором стоит упомянуть - для каждого файла PDF на моем компьютере, когда я пытаюсь открыть любой файл PDF с помощью Adobe Acrobat DC или Foxit Reader, вначале происходит сбой считывателя, который становится «не отвечающим» примерно на 10-15. секунд, а затем он открывает файл PDF.

Ответы [ 3 ]

3 голосов
/ 19 мая 2019

У меня вчера была такая же проблема, я скачал отсюда версию 9.26 https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs926/gs926aw32.exe, и работает!

Я думаю, что это ошибка в ghostscript 9.27.

1 голос
/ 19 мая 2019

Я подозреваю, что это вовсе не ошибка (я, конечно, не верю, что это ошибка Ghostscript), но, вероятно, это изменение поведения. Из-за сообщений об уязвимостях в безопасности разработчики Ghostscript удалили доступ к многим нестандартным расширениям PostScript (уникальным для Ghostscript). Совсем недавно был обеспечен доступ к словарю для обработки файлов PDF.

Мое подозрение заключается в том, что Ghostscript.NET (который не поддерживается разработчиками Ghostscript) использует одно или несколько нестандартных расширений для получения количества страниц. Не зная, что именно используется в настоящее время, я, конечно, не могу быть уверен.

Если разработчик Ghostscript.NET хочет связаться с нами и подтвердить, что это проблема, мы можем обсудить поддерживаемый в настоящее время метод получения количества страниц в файле PDF.

Совсем не поможет отправить мне проект с использованием Ghostscript.NET, так как я ничего об этом не знаю. Я также не являюсь разработчиком на C # или .NET, поэтому код, скорее всего, будет для меня бессмысленным.

Ghostscript возвращает значительную информацию о обратном канале, stdout и / или stderr. Они могут быть перенаправлены в определенный приемник данных. Я полагаю, что Ghostscript.NET предоставит вам некоторые средства для их извлечения, и если вы планируете заниматься какой-либо реальной разработкой с использованием Ghostscript, я очень настоятельно рекомендую вам узнать, как получить эту информацию.

Когда вы говорите: «Нет ошибок из Ghostscript», я думаю, что вы путаете Ghostscript и Ghostscript.NET. Не видя обратного канала из Ghostscript, я не вижу, как можно определить, выдает ли Ghostscript ошибку.

Обратите внимание: если вы планируете распространять свое приложение, вы должны соблюдать условия AGPL версии 3 (то есть лицензии, применяемой к Ghostscript), что включает доставку копии лицензии и некоторые средства для информирования пользователей о том, где они можно получить оригинал.

0 голосов
/ 21 мая 2019

Как и в случае с ОП и основным ответом на этот вопрос, я тоже столкнулся с этой проблемой только вчера.

Я просто хочу добавить, что для меня предложенная версия ghostscript (9.26) не работала. Он жаловался, что я должен использовать 64-битную версию.

Для тех, кому это нужно, здесь: https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs926/gs926aw64.exe

Мне просто нужно было угадать по URL. Я поражен тем, как трудно было найти старые версии.

...