Ghostscript.NET проблема качества текста изображения

1

Я пытаюсь преобразовать документ PDF в изображения с помощью ghostscript. Требуемый dpi устанавливается в 72px, который должен быть достаточно высоким, чтобы текст отображался четко, но большая часть текста была неразборчива.

Я могу поднять dpi, но это вызовет очень большие файлы изображений, которые я бы предпочел не иметь.

Я знаю, что есть аргументы для ghostscript для добавления сглаживания и т.д. (Например, -dDOINTERPOLATE). Как добавить их в следующий фрагмент кода, или есть лучший способ сделать это?

        int desired_x_dpi = 72;
        int desired_y_dpi = 72;

        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);
        }
  • 0
    Какую версию Ghostscript.NET вы используете?
  • 0
    Версия 1.1.9 загружена как пакет nuget.
Теги:
ghostscript
ghostscript.net

1 ответ

2

В 1.1.9 GhostscriptRasterizer имеет -dDOINTERPOLATE установленный по умолчанию. Единственными параметрами, которыми вы можете управлять с помощью класса GhostscriptRasterizer, являются TextAlphaBits и GraphicsAlphaBits.

Я бы рекомендовал вам попробовать использовать другие классы из Ghostscript.NET, если вы хотите больше контролировать параметры.

Взгляните на эти образцы: образцы использования устройств изображений

Вы можете добавить пользовательские параметры (переключатели) следующим образом:

GhostscriptPngDevice dev = new GhostscriptPngDevice(GhostscriptPngDeviceType.Png16m);
dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.ResolutionXY = new GhostscriptImageDeviceResolution(96, 96);
dev.InputFiles.Add(@"E:\gss_test\indispensable.pdf");
dev.Pdf.FirstPage = 2;
dev.Pdf.LastPage = 4;
dev.CustomSwitches.Add("-dDOINTERPOLATE"); // custom parameter
dev.OutputPath = @"E:\gss_test\output\indispensable_color_page_%03d.png";
dev.Process();

Когда я поймаю некоторое время, я продолжу GhostscriptRasterizer, чтобы принять пользовательские параметры в методе Open для выпуска Ghostscript.NET v.1.2.0.

  • 1
    Отлично. Я сделаю это. Спасибо за быстрый ответ.
  • 0
    Еще одна вещь, если у вас есть локальная dll, вы можете передать свой localDllInfo методу dev.Process (localDllInfo, ....).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню