Site Tools


software:troubleshoot:ps2pdf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
software:troubleshoot:ps2pdf [2009/10/04 15:17] adminsoftware:troubleshoot:ps2pdf [2009/10/04 17:44] (current) admin
Line 16: Line 16:
   * ps2pdf.bat   * ps2pdf.bat
   * ps2pdfxx.bat   * ps2pdfxx.bat
 +See below for their contents.
  
 ==== ps2pdf.bat ==== ==== ps2pdf.bat ====
Line 37: Line 38:
 if not %3/==/ goto top if not %3/==/ goto top
 call ps2pdfxx %1 %2 call ps2pdfxx %1 %2
 +</code>
  
 +==== ps2pdfxx.bat ====
 +<code dos>
 +@echo off
 +@rem $Id: ps2pdfxx.bat 6300 2005-12-28 19:56:24Z giles $
 +rem Internal batch file for calling pdfwrite driver.
 +
 +rem The files that call this one (ps2pdf*.bat) write the command-line
 +rem options into _.at, and then pass the last 2 (or fewer) arguments
 +rem to this file.
 +
 +call gssetgs.bat
 +echo -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite >_.at2
 +
 +if "%OS%"=="Windows_NT" goto nt
 +
 +rem Run ps2pdf on any Microsoft OS.
 +
 +if %1/==/ goto usage
 +if %2/==/ goto usage
 +
 +rem Watcom C deletes = signs, so use # instead.
 +rem We have to include the options twice because -I only takes effect if it
 +rem appears before other options.
 +
 +:run
 +echo -sOutputFile#%2 >>_.at2
 +copy /b /y _.at2+_.at >NUL
 +echo -c .setpdfwrite -f %1 >>_.at2
 +%GSC% @_.at @_.at2
 +goto end
 +
 +:usage
 +echo Usage: ps2pdf [options...] input.[e]ps output.pdf
 +goto end
 +
 +rem Run ps2pdf on Windows NT.
 +
 +:nt
 +if not CMDEXTVERSION 1 goto run
 +if %1/==/ goto ntusage
 +if %2/==/ goto nooutfile
 +goto run
 +
 +:ntusage
 +echo Usage: ps2pdf input.ps [output.pdf]
 +echo    or: ps2pdf [options...] input.[e]ps output.pdf
 +goto end
 +
 +:nooutfile
 +rem We don't know why the circumlocution with _1 is needed....
 +set _1=%1
 +set _outf=%_1:.PS=.pdf%
 +if %_1%==%_outf% goto addsuff
 +call ps2pdfxx %1 %_outf%
 +goto postsuff
 +
 +:addsuff
 +call ps2pdfxx %1 %1%.pdf
 +
 +:postsuff
 +set _1=
 +set _outf=
 +
 +:end
 +rem Clean up.
 +if exist _.at erase _.at
 +if exist _.at2 erase _.at2
 </code> </code>
 +
 +===== Problem found =====
 +From the above code, it seems that the windows version of ps2pdf doesn't parse options as written in the [[http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.50/Ps2pdf.htm|manual]]:
 +<code>
 +...
 +The usage for ps2pdf is
 +
 +    ps2pdf [options] input.[e]ps output.pdf
 +...
 +</code>
 +
 +If I use the following command:
 +  ps2pdf "-sPAPERSIZE=a4" in.ps out.pdf
 +
 +Analyzing this command from the 'windows' point of view::
 +  - ps2pdf.bat is invoked. It gets three arguments: %1, %2 and %3. Specifically:\\ %1 = "-sPAPERSIZE=a4"\\ %2 = in.ps\\ %3 = out.pdf
 +  - The text **-dCompatibilityLevel#1.4** is written to a text file called **_.at** which resides in the same directory as your working directory.
 +  - If the third argument, %3, is not empty, append the first argument, %1, to the file **_.at**
 +  - Shift all arguments out one further, repeat previous step above until only last two arguments are left.
 +  - once finished the following command is called:\\ ps2pdfxx %1 %2\\ with %1: in.ps, %2: out.pdf and all [options] are stored in the file **_.at**
 +  - 
software/troubleshoot/ps2pdf.1254662263.txt.gz · Last modified: 2009/10/04 15:17 by admin