如何在postscript文件上创建程序覆盖文本?

rup*_*rup 2 pdf shell graphics postscript ghostscript

我有一些postcript格式的图表,由gnuplot生成.我需要在图表上放置一些识别信息.如何编写一些指令来执行此操作?我想在图表的右上角写一个数字(.ps文件).

Kur*_*fle 5

好的,您链接到的示例文件表现良好(并且没有重新定义showpage运算符).

所以我现在假设如下:

  1. 您的所有.ps文件都与您的示例文件类似.
  2. 所有.ps文件仅为1页(如.eps文件).
  3. 你的所有文件名都像构造一样gnp-NNN.ps(就像gnp-544.ps一样).
  4. 要显示在右上角的数字NNN来自文件名.

我还假设您安装了Ghostscript,它是最新版本,8.71.我目前在Windows上-如果你在Linux/Unix,只需更换gswin32c.exegs,所有行尾^\.

测试PDF输出

现在首先尝试此命令:

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
Run Code Online (Sandbox Code Playgroud)

并查看结果是否符合gnp-with-number-544.pdf您的要求.

-c "..."用于为PostScript片段传递到Ghostscript的,使其与它有那么跟随作为下一个参数主要.ps文件一起处理这些,有-f ....

您可以修改参数:

  • 更换/Helvetica-Italic的字体名/Helvetica,/Courier,/Times,Helvetica-Bold或任何你已经使用和喜欢.
  • 或修改fontsize:15这里表示15个点(PDF 72点== 1英寸).
  • 或者更改位置:453 482将PostScript当前移动到"453点向左,482点到顶部"(oringin 0,0设置在左下角).
  • 或调整媒体大小:-g5030x5320给你503x532分(由于使用的默认分辨率为720 dpi)-sDEVICE=pdfwrite.
  • 或者将要打印的字符串设置为(File No. 544) show或者您想要的任何内容.

您还可以添加相当多的参数来调整输出文件的质量(分辨率,字体嵌入等),但这些参数现在都可以.

更改为PostScript输出

如果您出于某种原因需要PostScript输出而不是PDF,请更改以下命令:

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
Run Code Online (Sandbox Code Playgroud)

批量转换大量文件

现在,如何批量转换这个?对于最后一步,我假设:

  1. 你的NNN编号方案没有使用领先0的.
  2. 您要转换的文件范围是gnp-1.ps..gnp-1000.ps.
  3. 你想要添加数字的PDF输出,而不是PS.

在Windows上,addnumbers-make-pdf.bat使用以下内容创建文件:

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
Run Code Online (Sandbox Code Playgroud)

现在在cmd.exe控制台中运行此命令:

for /l %i in (1,1,100) do (addnumbers-make-pdfvim.bat %i)
Run Code Online (Sandbox Code Playgroud)

在Linux上,addnumbers-make-pdf.sh使用以下内容创建Bash shell脚本:

#!/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
Run Code Online (Sandbox Code Playgroud)

现在在shell中运行此命令:

for i in $(seq 1 1000); do addnumbers-make-pdf.sh ${i} ; done
Run Code Online (Sandbox Code Playgroud)

更新:
哈!它甚至可以工作;-)我刚刚在Windows上测试过它.以下是包含原始文件和重叠文件(如PDF)的屏幕截图:
替代文字