将pdf转换成图像使用c# - Ghostscript

本文关键字:Ghostscript 图像 pdf 转换 | 更新日期: 2023-09-27 18:13:20

我需要在Unity中使用c#脚本将pdf文件转换为图像。Ghostscript不应该安装在磁盘上。我试图包括ghostscript .dll并使用它与使用以下函数的包装器:

gsapi_new_instance
gsapi_init_with_args
gsapi_exit
gsapi_delete_instance

然而,如果我使用命令-sDEVICE=png16m -sOutputFile=outputpath.png inputpath.pdf作为参数,它不工作。pdf文件的第一页被创建,但其他页面没有。我在输出路径中使用了"-%d",但它也不起作用。例如:C: '例子——% d.png

我使用Ghostscript版本9.16,Unity版本5.2.0f3和Visual Studio 2015。

谁能告诉我,为什么第一个图像文件是创建的,而其他不是?是否有任何简单的替代使用ghostscript创建多个图像从pdf使用c# ?

将pdf转换成图像使用c# - Ghostscript

你试过Magick吗?净?

这是一个非常流行的。net ImageMagick库包装器(它使用Ghostscript在后台为pdf)

首先安装NuGet Install-Package GhostScriptSharp。然后你可以这样做:

/// <summary>
/// Convertetion PDF to image.
/// </summary>
/// <param name="Path">Path to file for convertetion</param>
/// <param name="PDFfile">Book name on HDD</param>
/// <param name="Devise">Select one of the formats, jpg</param>
/// <param name="PageFormat">Select one of page formats, like A4</param>
/// <param name="qualityX"> Select quality, 200X200 ~ 1200X1900</param>
/// <param name="qualityY">Select quality, 200X200 ~ 1200X1900</param>
    public void CreatPDF(string Path, string PDFfile, GhostscriptSharp.Settings.GhostscriptDevices Devise,
GhostscriptSharp.Settings.GhostscriptPageSizes PageFormat, int qualityX, int qualityY)
    {
        GhostscriptSharp.GhostscriptSettings SettingsForConvert = new GhostscriptSharp.GhostscriptSettings();
        SettingsForConvert.Device = Devise;
        GhostscriptSharp.Settings.GhostscriptPageSize pageSize = new GhostscriptSharp.Settings.GhostscriptPageSize();
        pageSize.Native = PageFormat;
        SettingsForConvert.Size = pageSize;
        SettingsForConvert.Resolution = new System.Drawing.Size(qualityX, qualityY);
        GhostscriptSharp.GhostscriptWrapper.GenerateOutput(Path, @"C:'" + PDFfile + "''" + PDFfile + "_" + "%d.jpg", SettingsForConvert); // here you could set path and name for out put file.
    }

非常感谢KenS和所有其他人。

我的问题是我定义-dNOPAUSE作为我的第一个参数。但是,不应该为ghostscript定义第一个参数。这不是从鬼脚本实现的,所以这就是为什么我只得到第一页。感谢KenS使用-dNOPAUSE的建议,我能够找到错误。

我希望这对其他人也有帮助。