5

I want to know the syntax to invoke GhostScript directly to get the same effect as each of the following command does.

  1. ps2pdf input.ps
  2. pdfcrop --hires input
  3. pdftops -eps input.pdf
  4. epstool --copy --bbox input.eps output.eps
  5. epstopdf --hires input.eps
Display Name
  • 46,933

3 Answers3

8

You can get this by looking at the source code of these tools. Most of them are scripts, which compile a list of Ghostscript options depending on their command line options and execute it at the end. In order to get the $OPTIONS variables etc. decoded automatically you can make a copy of these scripts and add an echo before the final command so it is printed in the terminal and not executed. An even simpler alternative is to start them using $SHELL -x script --args which is the shell debug mode (at least for sh and bash) which prints all executed commands.

For your 1. I get:

gs -P- -dSAFER -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile=input.pdf -P- -dSAFER -c .setpdfwrite -f input.ps

Number 2. is a Perl script and is only using GS for the BBox extraction (as my fixbb script does I mentioned in your other question):

gs -sDEVICE=bbox -dBATCH -dNOPAUSE -c save pop -f input.pdf

Number 3. is a program not a script and uses libpoppler internally to do the conversion, not Ghostscript.

Number 4. again simply uses Ghostscript for BBox extraction which is then placed into the otherwise unchanged file. Here the BBox is written to a temp file first.

"gs"  -dNOPAUSE -dBATCH -sDEVICE=bbox   -c "> setpagedevice" -f "/tmp/gsviewnIk3kp"

Number 5 uses (displayed using the --debug option):

gs -q -dNOPAUSE -dSAFER -sDEVICE=pdfwrite -sOutputFile=input.pdf -dPDFSETTINGS=/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dAutoRotatePages=/None - -c quit
Martin Scharrer
  • 262,582
  • by the way: the -dSAFER shouldn't be used when the converted PS file has to read and/or write from/to external files. It forbits such operations –  Jul 02 '11 at 09:20
  • @xport: The GS command line argument should be about the same, maybe different styles (e.g. arguments start with / not -). In this case it would by batch scripts (.bat) but also here echo works. – Martin Scharrer Jul 02 '11 at 09:20
  • I think your answer for number 2 does not work as pdfcrop --hires input.pdf. – Display Name Jul 02 '11 at 09:43
  • @Martin: Are you sure that -P switch occurs thrice and -dSAFER option occurs twice in ps2pdf? – Display Name Jul 26 '11 at 03:31
  • Is there one for ps2eps input.ps as well? – highsciguy Apr 05 '13 at 06:20
6

Where is the problem? Do a cat `which ps2pdf` under Linux or type .... under Windows (don't know if it has the same "which" feature as Linux) .

epstool is a program not a script.

Joseph Wright
  • 259,911
  • 34
  • 706
  • 1,036
  • @Joseph: how do I get the backticks inside backticks? –  Jul 02 '11 at 09:17
  • Press the edit button, you will see how to escape backtick. Inner backticks must be enclosed by a pair of double backticks. – Display Name Jul 02 '11 at 09:20
  • @Herbert: if I'm not wrong, starting from the NT family, Windows has now a command called where, which is very similar to the good old Linux which (it seems to incorporate some find features as well). :-) – Paulo Cereda Jul 02 '11 at 10:56
4

Most of these are shell/perl scripts so you can easily see what they do. They all do a bit (or a lot) more than simply invoking gs though, so I'll just give the main option they use. You'll have to read the code to see exactly what:

  1. -sDEVICE=pdfwrite
  2. -sDEVICE=bbox
  3. Not based on ghostscript!
  4. -sDEVICE=bbox
  5. -sDEVICE=pdfwrite
Lev Bishop
  • 45,462