Конвертировать PDF в PNG создать черное поле вокруг изображения

Я пытаюсь преобразовать PDF в изображение с ghostscript.net (1.2.1.0) и версия GS 9,22 х86.

мой код:

using (_rasterizer = new GhostscriptRasterizer())
{
    _rasterizer.Open(inputPdfPath, _lastInstalledVersion, false);

    //_rasterizer.CustomSwitches.Add("-sDEVICE=pngalpha");
    //_rasterizer.CustomSwitches.Add("-dTextAlphaBits=4");
    //_rasterizer.CustomSwitches.Add("-dGraphicsAlphaBits=4");

    for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++)
    {
        var desiredDPI = 102;
        using (System.Drawing.Image img = _rasterizer.GetPage(desiredDPI, desiredDPI, pageNumber))
        {
            img.Save(pageNumber + ".png", ImageFormat.Png);
        }
    }
}

он работает для некоторых страниц, но для некоторых изображений создает черное поле и черный фон.

файлы примеров: pdf => png

Я проверяю с помощью команды GS, все было в порядке. Я попробовал следующий код. изображения были хорошими, но текст был низкого качества.

public Image getImg(string inputFile, int pageNO, int resolution)
{
    GhostscriptPngDevice dev = new GhostscriptPngDevice(GhostscriptPngDeviceType.PngAlpha);
    dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
    dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
    dev.ResolutionXY = new GhostscriptImageDeviceResolution(resolution, resolution);
    dev.InputFiles.Add(inputFile);
    dev.Pdf.FirstPage = pageNO;
    dev.Pdf.LastPage = pageNO;
    dev.CustomSwitches.Add("-dDOINTERPOLATE");
    dev.OutputPath = pageNO + ".png";
    dev.Process();

    return Image.FromFile(pageNO + ".png");
}

1 ответ

 GhostscriptPngDevice dev = new GhostscriptPngDevice(GhostscriptPngDeviceType.Png16m);
        dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
        dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
        dev.BackgroundColor = Color.White;
        dev.ResolutionXY = new GhostscriptImageDeviceResolution(desired_x_dpi, desired_y_dpi);
        dev.InputFiles.Add(inputPathAndFile);
        dev.Pdf.FirstPage = 1;
        dev.Pdf.LastPage = 1;
        dev.CustomSwitches.Add("-dDOINTERPOLATE");
        dev.OutputPath = outputPathAndFile;
        dev.Process();
Другие вопросы по тегам