I have some graphs in postscript format, generated by gnuplot. I need to place some identifying information on the graph. How can I script some instructions to do that? I want to write a number at the top right corner of the graph (a .ps file).
Ok, the example file you linked to is well behaving (and has not re-defined the showpage
operator).
So I'm now assuming the following:
gnp-NNN.ps
(like gnp-544.ps is).NNN
from the filename.I also assume you have Ghostscript installed, and it is the most recent version, 8.71. I'm currently on Windows -- if you're on Linux/Unix, just replace gswin32c.exe
by gs
and all line endings ^
by \
.
Now try this command first:
gswin32c.exe ^
-o gnp-with-number-544.pdf ^
-sDEVICE=pdfwrite ^
-g5030x5320 ^
-c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (544) show" ^
-f gnp-544.ps
and see if the resulting gnp-with-number-544.pdf
looks like you want it.
The -c "..."
is used to pass PostScript snippets to Ghostscript and make it process these together with the main .ps file which has then to follow as next parameter, with -f ...
.
You can modify parameters:
/Helvetica-Italic
fontname by /Helvetica
, /Courier
, /Times
, Helvetica-Bold
or whatever you've available and prefer. 15
here means 15 points (in PDF 72 points == 1 inch). 453 482
moves the PostScript currentpoint to "453 points to the left, 482 points to the top" (with the oringin 0,0 set to the bottom left corner).-g5030x5320
gives you 503x532 points (due to the default resolution of 720 dpi used by -sDEVICE=pdfwrite
.(File No. 544) show
or whatever you want.You could also add quite a few parameters to tweak the quality of the output file (resolution, font embedding etc.), but these ones will do for now.
Should you need PostScript output for some reason instead of PDF, change the command like this:
gswin32c.exe ^
-o gnp-with-number-544.ps ^
-sDEVICE=ps2write ^
-g5030x5320 ^
-c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (544) show" ^
-f gnp-544.ps
Now, how to batch-convert this? For this last step, I'm assuming:
NNN
numbering scheme is not using leading 0
s. On Windows, create an addnumbers-make-pdf.bat
file with this content:
gswin32c.exe ^
-o gnp-with-number-%1.pdf ^
-sDEVICE=pdfwrite ^
-g5030x5320 ^
-c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (%1) show" ^
-f gnp-%1.ps
Now run this command in a cmd.exe
console:
for /l %i in (1,1,100) do (addnumbers-make-pdfvim.bat %i)
On Linux, create an addnumbers-make-pdf.sh
Bash shell script with this content:
#!/bin/bash
gs \
-o gnp-with-number-${1}.pdf \
-sDEVICE=pdfwrite \
-g5030x5320 \
-c "/Helvetica-Italic findfont 15 scalefont setfont 453 482 moveto (${1}) show" \
-f gnp-${1}.ps
Now run this command in a shell:
for i in $(seq 1 1000); do addnumbers-make-pdf.sh ${i} ; done
Update:
Hah!, it even works ;-) I just tested it on Windows. Here is a screenshot with the original and the overlayed file (as PDFs):