C# overview


In the GhostPDL repository a sample C# project can be found in /demos/csharp.

Within this project the following namespaces and corresponding C# files are of relevance:

Platform & setup

Building Ghostscript

Ghostscript should be built as a shared library for your platform.

See Building Ghostscript.


GhostAPI is the main wrapper responsible for bridging over to the C library and ensuring that the correct DLLs are imported.

GhostAPI contains the ghostapi class which does not need to be instantiated as it provides public static methods. These methods, which mirror their C counterparts, are as follows:

Method Description
gsapi_revision Returns the revision numbers and strings of the Ghostscript interpreter library
gsapi_new_instance Create a new instance of Ghostscript
gsapi_delete_instance Destroy an instance of Ghostscript
gsapi_set_stdio_with_handle Set the callback functions for stdio, together with the handle to use in the callback functions
gsapi_set_stdio Set the callback functions for stdio
gsapi_set_poll_with_handle Set the callback function for polling, together with the handle to pass to the callback function
gsapi_set_poll Set the callback function for polling
gsapi_set_display_callback deprecated
gsapi_register_callout This call registers a callout handler
gsapi_deregister_callout This call deregisters a previously registered callout handler
gsapi_set_arg_encoding Set the encoding used for the interpretation of all subsequent args supplied via the gsapi interface on this instance
gsapi_set_default_device_list Set the string containing the list of default device names
gsapi_get_default_device_list Returns a pointer to the current default device string
gsapi_init_with_args Initialise the interpreter
gsapi_run_* Wildcard for various "run" methods
gsapi_exit Exit the interpreter
gsapi_set_param Set a parameter
gsapi_get_param Get a parameter
gsapi_enumerate_params Enumerate the current parameters
gsapi_add_control_path Add a (case sensitive) path to one of the lists of permitted paths for file access
gsapi_remove_control_path Remove a (case sensitive) path from one of the lists of permitted paths for file access
gsapi_purge_control_paths Clear all the paths from one of the lists of permitted paths for file access
gsapi_activate_path_control Enable/Disable path control
gsapi_is_path_control_active Query whether path control is activated or not


GhostNET is the .NET interface into GhostAPI. It exemplifies how to do more complex operations involving multiple API calls and sequences.

GhostNET WPF example

In demos/csharp/windows/ghostnet.sln there is a sample C# demo project.

This project can be opened in Visual Studio and used to test the Ghostscript API alongside a UI which handles opening PostScript and PDF files. The sample application here allows for file browsing and Ghostscript file viewing.

Below is a screenshot of the sample application with a PDF open:

ghostnet wpf example UI


GhostMono is the Mono equivalent of GhostNET and as such has no dependancy on a Windows environment.