I referred Adobe's Postscript Language Reference to understand the operator setrgbcolor and operands that it accepted. Sign up to join this community. The best answers are voted up and rise to the top. Stack Overflow for Teams — Collaborate and share knowledge with a private group. Create a free Team What is Teams? Learn more. Asked 11 years, 3 months ago. Active 1 year, 3 months ago. Viewed 42k times. Improve this question. Community Bot 1. Add a comment.
Active Oldest Votes. Improve this answer. Surge Surge 1 1 silver badge 2 2 bronze badges. Other than that: Great answer — thank you. It did not work for me with gs 9. I concur with XavierStuvw It seems the behavior of gs has changed since The solution by KurtPfeifle below that converts a ps to a black-white pdf with gs I am not sure if the following suggestion will work Kurt Pfeifle Kurt Pfeifle I tried this and was still left with shades of gray.
I found pdf2ps incredibly slower than a conversion with gs. It's not ghostscript, but with imagemagick this is quite simple: convert -monochrome input. The resulting pdf quality is much much worse than original. This seems to do halftoning; I want all colors but white to be converted to black, regardless of darkness.
Please upgrade to continue processing this document. Free users are limited to 50 pages per conversion. Free users are limited to 5 files per Rename task. Upgrade Already have an account? Log in. Incorrect password. Cancel Continue. Invalid web address. File upload failed. Ok, retry upload. Session expired. Your session expired and files were deleted from our servers.
Please re-upload your files to continue. Re-upload files. Below we show how to convert PDF files to black and white. Few reasons to convert your colour PDF to grayscale are: Save on coloured printer ink. If you're printing a grayscale PDF only black ink will be used. Compress the PDF to a smaller size. Works best when the PDF contains images. Grayscale images are smaller in size than coloured ones.
Upload your files Files are safely uploaded over an encrypted connection. Click 'Upload' and select files from your local computer. Dragging and dropping files to the page also works. Expand the 'Upload' dropdown and select your files. This allows for a performance vs. Every source pixel will contribute partially to the destination pixels. Computationally, image interpolation is much more demanding than without interpolation lots of floating point muliplies and adds for every output pixel vs simple integer additions, subtractions, and shifts.
In all but special cases image interpolation uses a Mitchell filter function to scale the contributions for each output pixel. When upscaling, every output pixel ends up being the weighted sum of 16 input pixels, When downscaling more source pixels will contribute to the interpolated pixels. Every source pixel has some effect on the output pixels.
Note that because of the way antialiasing blends the edges of shapes into the background when they are drawn some files that rely on joining separate filled polygons together to cover an area may not render as expected with GraphicsAlphaBits at 2 or 4. Further note; because this feature relies upon rendering the input it is incompatible, and will generate an error on attempted use, with any of the vector output devices.
PCL andPostScript cannot be handled in ths way, and so all the pages must be interpreted. Pages are scaled to fit the requested number horizontally and vertically, maintaining the aspect ratio. If the scaling selected for fitting the nested pages leaves space horizontally on the master page, the blank area will be added to the left and right of the entire row of nested pages.
If the fit results in vertical space, the blank area will be added above and below all of the rows. If there are any nested pages on the master page, the partially filled master page will be output.
Printer devices typically reallocate their memory whenever the transparency use of a page changes from one page having transparency, to the next page not having transparency, or vice versa. This would cause problems with Nup, possibly leading to lost or corrupt pages in the output. To avoid this, the Nup device changes the parameters of the page to always set the PageUsesTransparency flag.
While this should be entirely transparent for the user and not cause extra transparency blending operations during the standard rendering processes for most devices, it may cause devices to use the clist rather than PageMode.
Useful only for compatibility with Adobe printers for loading some obsolete fonts. This may be useful in environments without a file system. This may be useful for debugging.
This may be needed if the platform fonts look undesirably different from the scalable fonts. This may be needed to ensure consistent rendering on the platforms with different fonts, for instance, during regression testing. Specifies alternate name or names for the Fontmap file.
Note that the names are separated by " : " on Unix systems, by " ; " on MS Windows systems, and by " , " on VMS systems, just as for search paths. Also, in this case, the font returned by findfont is the actual font named fontname , not a copy of the font with its FontName changed to the requested one.
The font specified fontname will be embedded instead, limiting all future users of the document to the same approximate rendering. The value is platform dependent. It must end with a directory separator. Adobe specifies GenericResourceDir to be an absolute path to a single resource directory.
Ghostscript instead maintains multiple resource directories and uses an extended method for finding resources, which is explained in "Finding PostScript Level 2 resources". Due to the extended search method, Ghostscript uses GenericResourceDir only as a default directory for resources being not installed.
Therefore GenericResourceDir may be considered as a place where new resources to be installed. The default implementation of the function ResourceFileName uses GenericResourceDir when 1 it is an absolute path, or 2 the resource file is absent. The extended search method does not call ResourceFileName. Pages can be printed in reverse or normal order, or selected pages, including all even or all odd, and multiple collated copies can be produced.
Since pages are saved until the flush command, pages can be printed multiple times, in any order. Note that not all spot color overprint cases can be accurately simulated with a CMYK only device. For example, a case where you have a spot color overprinted with CMYK colors will be indistiguishable from a case where you have spot color equivalent CMYK colorants overprinted with CMYK colors, even though they may need to show significantly different overprint simulations.
If this option is included in the command line, source device color values e. In addition, if the output device color model matches the output intent color model, then the destination ICC profile will be the output intent ICC profile. If there is a mismatch between the device color model and the output intent, the output intent profile will be used as a proofing profile, since that is the intended rendering. It is possible to specify a particular output intent where int is an integer a value of 0 is the same as not specifying a number.
Probing of the output intents for a particular file is possible using extractICCprofiles. Finally, note that the ICC profile member entry is an option in the output intent dictionary. In these cases, the output intent specifies a registry and a standard profile e.
Ghostscript will not make use of these output intents. Instead, if desired, these standard profiles should be used with the commands specified above e. Because its possible as of PDF 2. Instead this option takes a string, which is first compared against the OutputConditionIdentifier in each OutputIntent in the array. If the OutputConditionIdentifier is not a standard identifier then it should be Custom and the UseOutputIntent string will be matched against the value of the Info key instead.
If the current directory is the first path a test is made for the iccprofiles directory. Next, the remaining paths with the string Resource in it are tested. The prefix up to the path separator character preceding the string Resource, concatenated with the string iccprofiles is used and if this exists, then this path will be used for ICCProfilesDir.
Example usage is: gs This mode should be used with caution, and. Enables access controls on files. Access controls fall into three categories, files from which Ghostscript is permitted to read, ones to which it is permitted to write, and ones over which it has "control" i.
These access controls apply to all files accessed via Ghostscript's internal interface to the C library file handling. Whilst we have taken considerable pains to ensure that all the code we maintain as well as the so called "contrib" devices, that are devices included in our release packages, but not strictly maintained by the Ghostscript development team uses this interface, we have no control over thirdparty code.
It relied on restricting the function of setpagedevice to avoid the device code from being manipulated into opening arbitrary files. The application of the file permissions was done within the internal context of the Postscript interpreter, and some other aspects of the Postscript restrictions were applied in the Postscript environment.
With so many of the feature's capabilities relying on the Postscript context and environment, by using other Ghostscript specific features maliciously, the restrictions could be overridden. Whilst the path storage and application of the permissions is implemented entirely in C, it is still possible for Postscript to add and remove paths from the permissions lists see. An incompatibility exists between the pre Previously, it was possible to do the equivalent of: save.
This is no longer the case. After the call to. As the 9. Path matching is very simple: it is case sensitive, and we do not implement full featured "globbing" or regular expression matching such complexity would significantly and negatively impact performance. Similarly, you cannot grant permission through one symlink, and then reference a file directly, or through an alternative symlink - again, the matching will fail.
This is a change in behaviour compared to the old code which, on Windows, was case in sensitive. This is in recognition of changes in Windows behaviour, in that it now supports although does not enforce case sensitivity. Similarly, paths read during initialisation from Fontmap , cidfmap , and the platform specific font file enumeration e. It is included for now in case any users find a case where the 9. It means such users can keep working until we have assessed the issue, and distributed a solution.
This mode also sets the. Ghostscript attempts to find an optimum balance between speed and memory consumption, but there are some cases in which you may get a very large speedup by telling Ghostscript to use more memory. Please note that this discussion relates to devices which produce a bitmap format as the output.
These parameters have no effect on the vector devices, such as pdfwrite. All devices may use a display list "clist" and use banding when rendering PDF 1. This prevents allocation of excessively large amounts of memory for the transparency buffer stack. The number of threads should generally be set to the number of available processor cores for best throughput.
This can also be useful in processing large documents when using a high-level vector output device like pdfwrite that maintains significant internal state.
For pattern tiles that are very large, Ghostscript uses an internal display list memory based clist , but this can slow things down. The current default threshold is 8Mb -- pattern tiles larger than this will be cached as clist rather than bitmap tiles. There are several debugging switches that are detected by the interpreter. These switches are available whether or not Ghostscript was built with the DEBUG macro defined to the compiler refer to building a debugging configuration.
Previous to 8. Now there are several debugging flags to allow more selective debugging information to be printed containing only what is needed to investigate particular areas. The -Z and -T switches apply only if the interpreter was built for a debugging configuration. In the table below, the first column is a debugging switch, the second is an equivalent switch if any and the third is its usage. The following switch affects what is printed, but does not select specific items for printing:.
All the short form flags for -Z have an equivalent long form. Future flags may be added with a long form only due to all the short form flags being used already. Visual Trace allows to view internal Ghostscript data in a graphical form while execution of C code.
Special instructions to be inserted into C code for generating the output. Client application rasterizes it into a window. Currently the rasterization is implemented for Windows only, in clients gswin There are two important incompletenesses of the implementation :.
The graphical output uses a hardcoded scale. An advanced client would provide a scale option via user interface. Breaks are not implemented in the client. If you need a step-by-step view, you should use an interactive C debugger to delay execution at breakpoints.
The table here lists them by name and size. A guide to international paper sizes can be found at. In this environment, the relevant section of the resource file should look like this:.
Please ignore issues about UFST if you haven't got it. Important note: Third-party font renderers may be incompatible with devices that can embed fonts in their output such as pdfwrite , because such renderers may store fonts in a form from which Ghostscript cannot get the necessary information for embedding, for example, the Microtype fonts supplied with the UFST. Ghostscript can be configured to disable such renderers when such a device is being used.
As of Ghostscript version 9. NOTE: With version 9. Both bridges may run together. There are 2 ways to handle fonts with a third-party font renderer FAPI. Ghostscript searches the specified file names as explained in How Ghostscript finds files. Default values for these arguments are equal to argument names.
Font files, which are being handled with FAPI, may reside in any directory in your hard disk. Paths to them to be specified in FAPIfontmap and with special command line arguments, explained below. The path may be either absolute or relative. Relative ones are being resolved from the path, which is specified in FAPIconfig file. It may include records of 2 types : general records and FCO records see below.
A general record describes a font, which is being rendered with FAPI. They must end with semicolon. Each general record is a pair. The first element of the pair is the font name the name that PostScript documents use to access the font, which may differ from real name of the font which the font file defines. The second element is a dictionary with entries :. Each record of a group occupy a single line, and contains a number and 1, 2 or 3 names. The number is the font index in the FCO file, the first name is the Postscript font name, the secong is an Encoding resource name, and the third is a decoding resource name.
CID fonts to be listed in another map file. The format is similar to FAPIfontmap , but dictionaries must contain few different entries :. The last ones defines the configuration for handling resident UFST fonts only. Follow instructions in it. If UFST needs it and the command line argument is not specified, Ghostscript prints a warning and searches plugin file in the current directory. Some configurations of UFST need a path for finding symbol set files.
If UFST needs it and the command line argument is not specified, Ghostscript prints a warning and searches symbol set files in the current directory. Note that UFST and Free Type cannot handle some Ghostscript fonts because they do not include a PostScript interpreter and therefore have stronger restrictions on font formats than Ghostscript itself does - in particular, Type 3 fonts.
Invoking Ghostscript This document describes how to use the command line Ghostscript client. Here are some basic examples. The details of how these work are described below. Help at the command line: gs -h You can get a brief help message by invoking Ghostscript with the -h or -?
The message shows for that version of the Ghostscript executable: the version and release information the general format of the command line a few of the most useful options the formats it can interpret the available output devices the search path the bug report address On other systems the executable may have a different name: System Invocation Name Unix gs VMS gs MS Windows 95 and later gswin You can set the output device and process a file from the interactive prompt as well: epson selectdevice myfile.
You can switch devices at any time by using the selectdevice procedure, for instance like one of these: x11alpha selectdevice epson selectdevice Output resolution Some printers can print at several different resolutions, letting you balance resolution against printing speed. Output to files Ghostscript also allows you to control where it sends its output. For instance, to convert somefile. Sometimes the initialization files are compiled into Ghostscript and cannot be changed.
Interacting with pipes As noted above, input files are normally specified on the command line. This option is also set by the -dFitPage option. If neither of these is specified, the output will use the screen options for any output device that doesn't have an OutputFile parameter, and the printer options for devices that do have this parameter. This may include any extra bleed area needed to accommodate the physical limitations of cutting, folding, and trimming equipment.
The actual printed page may include printing marks that fall outside the bleed box. The trim box defines the intended dimensions of the finished page after trimming.
Some files have a TrimBox that is smaller than the MediaBox and may include white space, registration or cutting marks outside the CropBox. Using this option simulates appearance of the finished printed page.
The art box defines the extent of the page's meaningful content including potential white space as intended by the page's creator. The art box is likely to be the smallest box. It can be useful when one wants to crop the page as much as possible without losing the content.
Unlike the other "page boundary" boxes, CropBox does not have a defined meaning, it simply provides a rectangle to which the page contents will be clipped cropped. By convention, it is often, but not exclusively, used to aid the positioning of content on the usually larger, in these cases media. For files created with encryption method 4 or earlier, the password is an arbitrary string of bytes; with encryption method 5 or later, it should be text in either UTF-8 or your locale's character set Ghostscript tries both.
Annotations are shown by default. By default, AcroForm processing is now enabled because Adobe Acrobat does this. This option is provided to restore the previous behavior which corresponded to older Acrobat. This may be useful for backward compatibility with old versions of Ghostscript and Adobe Acrobat, or for processing files with large values of UserUnit that otherwise exceed implementation limits.
On TrueType fonts, this is often a hollow sqaure. Ghostscript now attempts to mimic this undocumented feature using a user parameter RenderTTNotdef. Pages of all documents in PDF collections are numbered sequentionally. A list can include single pages or ranges of pages. Ranges of pages use the minus sign '-', individual pages and ranges of pages are separated by commas ','. A trailing minus '-' means process all remaining pages.
Note: The differences in appearance of files with overprinting and spot colors caused by the differences in the color model of the output device are part of the PostScript and PDF specifications.
They are not due to a limitation in the implementation of Ghostscript or its output devices. In Adobe Acrobat, viewing of the effects of overprinting is enabled by the 'Overprint Preview' item in the 'Advanced' menu.
This feature is not available in the free Acrobat Reader. The free Acrobat Reader also uses the tint transform functions to convert spot colors to the appropriate alternate color space. Testing a file name for an absolute path System Does the name VMS Contain a node, device, or root specification? Finding PostScript Level 2 resources Adobe specifies that resources are installed in a single directory. It concatenates : The value of the system parameter GenericResourceDir ; The name of the resource category for instance, CMap ; The name of the resource instance for instance, Identity-H.
In this case it concatenates : A directory listed in the section How Ghostscript finds files , except the current directory; The value of the system parameter GenericResourceDir ; The name of the resource category for instance, CMap ; The name of the resource instance for instance, Identity-H Due to possible variety of the part 1, the first successful combination is used.
Font lookup Ghostscript has a slightly different way to find the file containing a font with a given name. First, it looks up the font name in the combined Fontmaps. If this process fails at any step, Ghostscript looks for a file whose name is the concatenation of the value of the FontResourceDir system parameter and the font name, with no extension. If such a file exists, can be loaded, and defines a font of the desired name, that again is the end. If that fails, Ghostscript then looks for a file on the general search path whose name is the desired font name, with no extension.
It goes to the first directory on the list, and it's descendants, looking for all files that appear to contain PostScript fonts also Truetype fonts ; it then adds all those files and fonts to the combined Fontmaps, and starts over.
Finally, if all else fails, it will try to find a substitute for the font from among the standard 35 fonts. Font-name-to-file-name mapping given in Fontmap files; aliases are possible, and there need not be any relation between the font name in the Fontmap and the FontName in the file. Font-name-to-file-name mapping is implicit — the FontName in the file is used. Aliases are not possible. Only fonts and files named in Fontmap are used.
Every Type 1 font file in each directory is available; if TrueType fonts are supported the ttfont. This must be an absolute path.
This is ignored if Path doesn't specify a collection. The first font in a collection is 0. Default value is 0. Notes on specific platforms Word size 32 or 64 bits The original PostScript language specification, while not stating a specific word sise, defines 'typical' limits which make it clear that it was intended to run as a bit environment.
However this is, obviously, dependent on the operating system and compiler support available. Not all builds of Ghostscript will support bit integers, though some bit builds eg Windows will. Unix The Ghostscript distribution includes some Unix shell scripts to use with Ghostscript in different environments. Although VMS DCL itself converts unquoted parameters to upper case, C programs such as Ghostscript receive their parameters through the C runtime library, which forces all unquoted command-line parameters to lower case.
Note: This definitely matters if Ghostscript was compiled with DEC C; we are not sure of the situation if you use gcc. Xdefaults Ghostscript doesn't look at the default system background and foreground colors; if you want to change the background or foreground color, you must set them explicitly for Ghostscript. This is a deliberate choice, so that PostScript documents will display correctly by default -- with white as white and black as black -- even if text windows use other colors.
The geometry resource affects only window placement. The font tolerance gives the largest acceptable difference in height of the screen font, expressed as a percentage of the height of the desired font. The palette resource can be used to restrict Ghostscript to using a grayscale or monochrome palette. Ghostscript never preallocates more than half the cells in a colormap.
Working around bugs in X servers The " use
0コメント