3

我有一些由 gnuplot 生成的 postscript 格式的图表。我需要在图表上放置一些识别信息。我怎样才能编写一些指令来做到这一点?我想在图表的右上角写一个数字(一个 .ps 文件)。

4

3 回答 3

5

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

所以我现在假设如下:

  1. 您的所有 .ps 文件都与您的示例文件相似。
  2. 您所有的 .ps 文件只有 1 页(如 .eps 文件)。
  3. 您所有的文件名都像构造一样gnp-NNN.ps(就像gnp-544.ps一样)。
  4. 您希望出现在右上角的数字NNN来自文件名。

我还假设您安装了 Ghostscript,它是最新版本8.71。我目前在 Windows 上——如果你在 Linux/Unix 上,只需将所有行尾替换gswin32c.exe为.gs^\

测试 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

看看结果是否gnp-with-number-544.pdf像你想要的那样。

用于将-c "..."PostScript 片段传递给 Ghostscript 并使其与主 .ps 文件一起处理这些文件,然后该文件必须作为下一个参数,使用-f ....

您可以修改参数:

  • /Helvetica-Italic将字体名称替换为/Helvetica/Courier/TimesHelvetica-Bold任何您可用和喜欢的内容。
  • 或者修改字体大小:15这里表示 15 磅(在 PDF 中72 磅 == 1 英寸)。
  • 或更改位置:453 482将 PostScript 当前点移动到“向左 453 点,向顶部 482 点”(将原点0,0设置为左​​下角)。
  • 或调整媒体大小:-g5030x5320为您提供 503x532 点(由于-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

批量转换大量文件

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

  1. 您的NNN编号方案未使用前导0s。
  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

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

for /l %i in (1,1,100) do (addnumbers-make-pdfvim.bat %i)

在 Linux 上,使用以下内容创建一个addnumbers-make-pdf.shBash 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

现在在 shell 中运行这个命令:

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

更新:
哈!,它甚至可以工作 ;-) 我刚刚在 Windows 上对其进行了测试。这是原始文件和覆盖文件(作为 PDF)的屏幕截图:
替代文字

于 2010-09-13T09:56:48.900 回答
3

如果您无权访问 Gnuplot 源文件,这里有一个有效的通用方法(您可以编写脚本)。它使用GhostscriptPDFTK

  1. 创建一个新的 PDF 文件,其中包含要覆盖到 .ps 图表的内容。
  2. 使用 Ghostscript 将源自 Gnuplot 的 .ps 图转换为 PDF。
  3. 使用pdftk(在 Unix 上)或pdftk.exe(在 Windows 上)覆盖两个 PDF。
  4. 使用 Ghostscript 将 PDF 转换回 PS(如果需要),或者继续使用 PDF。

这个超级用户答案包含许多详细信息,可以帮助您沿着上述路径前进。


文本编辑器的帮助下,您可以手动插入 PostScript 代码,将附加信息呈现到您的 .ps 文件中。

但是,如果不先查看图形的 PS 代码,我就无法为您提供有效的 PS 代码片段。


Ghostscript您可以使用单个命令行从图形创建新的 PS 文件。

用 s.th 试试。类似于gs -sDEVICE=ps2write -o output-with-comments-gnuplot.ps -c "570 800 moveto /Helvetica findfont 32 scalefont setfont (Number: 42) show" -f /path/to/gnuplot.ps“。

但是,如果不先查看图形的 PS 代码,我无法真正判断此 PS 代码片段是否真的有效。

于 2010-09-12T14:34:59.337 回答
1

如果可以影响 gnuplot 代码,则可以使用 gnuplot 添加文本。参见这个例子。要使用的命令是set label

于 2010-09-11T07:29:14.063 回答