Ghostscript. NET .Растеризатор с установленным разрешением (Dpi) не работает - PullRequest
1 голос
/ 13 февраля 2020

У меня есть этот код для преобразования pdf в tif, он быстрее, чем библиотека ImageMagick, поэтому я должен его использовать. Все работает хорошо, но когда я устанавливаю x и y dpi , это всегда игнорируется. Я пробовал разные версии NuGet GhostScript, и я также пробовал разные версии ghostscript.exe, но проблема по-прежнему

Вот мой код:

        var xDpi = 300; //set the x DPI
        var yDpi = 300; //set the y DPI

        using (var rasterizer = new GhostscriptRasterizer()) //create an instance for GhostscriptRasterizer
        {

            rasterizer.Open(fileName); //opens the PDF file for rasterizing
            int PdfPages = rasterizer.PageCount;
            for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
            {
                //set the output image(png's) complete path
                string outputPNGPath = Path.Combine(fileNameResultDirectory, "00" + pageNumber.ToString() + ".tif");


                //converts the PDF pages to png's 
                Image pdf2PNG = rasterizer.GetPage(xDpi, yDpi, pageNumber);//it gets ignored here.

                //save the png's
                pdf2PNG.Save(outputPNGPath, ImageFormat.Tiff);
            }



        }

Также пробовал:

 rasterizer.CustomSwitches.Add("-r300x300");

Также пробовал:

      private static void Test()
        {
            var localGhostscriptDll = Path.Combine(Environment.CurrentDirectory, "gsdll64.dll");
            var localDllInfo = new GhostscriptVersionInfo(localGhostscriptDll);

            int desired_x_dpi = 160;
            int desired_y_dpi = 160;

            string inputPdfPath = @"d:\d.pdf";

            string outputPath = @"d:\Test\test.jpg";

            GhostscriptRasterizer _rasterizer = new GhostscriptRasterizer();

            _rasterizer.Open(inputPdfPath, localDllInfo, false);

            for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++)
            {
                string pageFilePath = Path.Combine(outputPath, "Page-" + pageNumber.ToString() + ".png");

                Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber);
                img.Save(pageFilePath, ImageFormat.Png);
            }

            _rasterizer.Close();
        }

В этом случае я вручную добавил gsdll32.dll в этот путь среды .. \ bin \ debug Но я получаю эту ошибку: Ghostscript. NET .GhostscriptException: «Невозможно создать делегат экспортируемой функции для символа« gsapi_revision »»

Любая идея, почему значения x и y dpi игнорируются, а в свойствах устанавливается значение 96 или 120 как вертикальное / горизонтальное разрешение. Я ценю любую помощь.

...