This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
software:troubleshoot:ps2pdf [2009/10/04 15:17] – admin | software: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 38: | Line 39: | ||
call ps2pdfxx %1 %2 | call ps2pdfxx %1 %2 | ||
</ | </ | ||
+ | |||
+ | ==== 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# | ||
+ | |||
+ | if " | ||
+ | |||
+ | 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# | ||
+ | copy /b /y _.at2+_.at >NUL | ||
+ | echo -c .setpdfwrite -f %1 >> | ||
+ | %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: | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | ===== Problem found ===== | ||
+ | From the above code, it seems that the windows version of ps2pdf doesn' | ||
+ | < | ||
+ | ... | ||
+ | The usage for ps2pdf is | ||
+ | |||
+ | ps2pdf [options] input.[e]ps output.pdf | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | If I use the following command: | ||
+ | ps2pdf " | ||
+ | |||
+ | Analyzing this command from the ' | ||
+ | - ps2pdf.bat is invoked. It gets three arguments: %1, %2 and %3. Specifically: | ||
+ | - The text **-dCompatibilityLevel# | ||
+ | - 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** | ||
+ | - |