将PS文件修改为粗线

时间:2015-02-07 14:11:11

标签: postscript

我有一个.ps文件,我想增加主轴的线宽(主要和次要刻度)。 ps文件中的哪个属性是正确的属性。

ps文件可用here,您可以在下面看到输出文件。

enter image description here

更新

更新

根据BlueBook(第21和25页)和GreenBook(第41页),setlinewidth语法类似于

4 setlinewidth

但是,在我的文件中,setlinewidth像这样被调用

/sw /setlinewidth load def

似乎这是一种不同的语法!我还写了一段代码来弹出一个值(3)并将其设置为linewidth(至少我认为)

{ dup 0 eq
  { pop 3
  } if
  setlinewidth
} bind def
/sw /setlinewidth load def

但这不正确。

如果有人帮我改变线宽,我很感激,因为我不打算写一个打印机驱动程序....

2 个答案:

答案 0 :(得分:3)

说实话,这不是一个明智的问题。 PostScript是一种编程语言,因此要求改变哪个“属性”并没有多大意义。如果您希望打印结果不同,则应返回生成PostScript的原始应用程序,并对其进行修改。

您认为哪两个轴是“主轴”?

这部分代码:

gs
a 113 2 m 113 292 l ps
gr
gs
a ps
a 113 6.40922 m 107.5 6.40922 l ps
a 113 18.0718 m 102 18.0718 l ps
a 113 29.7345 m 107.5 29.7345 l 113 41.3971 m 107.5 41.3971 l 113 53.0597 m 107.5 53.0597 l 113 64.7223 m 107.5 64.7223 l 113 76.3849 m 107.5 76.3849 l 113 88.0476 m 107.5 88.0476 l 113 99.7102 m 107.5 99.7102 l 113 111.373 m 107.5 111.373 l 113 123.035 m 107.5 123.035 l 113 134.698 m 107.5 134.698 l ps
80 18.0718 m (0) s
a 113 134.698 m 102 134.698 l ps
a 113 146.361 m 107.5 146.361 l 113 158.023 m 107.5 158.023 l 113 169.686 m 107.5 169.686 l 113 181.349 m 107.5 181.349 l 113 193.011 m 107.5 193.011 l 113 204.674 m 107.5 204.674 l 113 216.336 m 107.5 216.336 l 113 227.999 m 107.5 227.999 l 113 239.662 m 107.5 239.662 l 113 251.324 m 107.5 251.324 l ps
42 123.698 m (500m) s
a 113 251.324 m 102 251.324 l ps
a 113 262.987 m 107.5 262.987 l 113 274.65 m 107.5 274.65 l 113 286.312 m 107.5 286.312 l 113 297.975 m 107.5 297.975 l 113 309.637 m 107.5 309.637 l 113 321.3 m 107.5 321.3 l 113 332.963 m 107.5 332.963 l 113 344.625 m 107.5 344.625 l 113 356.288 m 107.5 356.288 l 113 367.95 m 107.5 367.95 l ps
80 240.324 m (1) s
a 113 303.663 m 107.5 303.663 l 113 315.325 m 107.5 315.325 l 113 326.988 m 107.5 326.988 l 113 338.65 m 107.5 338.65 l 113 350.313 m 107.5 350.313 l 113 361.976 m 107.5 361.976 l 113 373.638 m 107.5 373.638 l 113 385.301 m 107.5 385.301 l 113 396.964 m 107.5 396.964 l 113 408.626 m 107.5 408.626 l ps
gr

绘制短轴(标记为Voltages(lin),以及代码的这一部分:

gs
a 2 64 m 709 64 l ps
gr
gs
a 2 64 m 2 53 l ps
a ps
a ps
a 22.2859 64 m 22.2859 53 l ps
a 49.4608 64 m 49.4608 58.5 l 76.6357 64 m 76.6357 58.5 l 103.811 64 m 103.811 58.5 l 130.986 64 m 130.986 58.5 l 158.161 64 m 158.161 58.5 l ps
11.7859 31 m (4n) s
a 158.161 64 m 158.161 53 l ps
a 185.335 64 m 185.335 58.5 l 212.51 64 m 212.51 58.5 l 239.685 64 m 239.685 58.5 l 266.86 64 m 266.86 58.5 l 294.035 64 m 294.035 58.5 l ps
139.661 31 m (4.2n) s
a 294.035 64 m 294.035 53 l ps
a 321.21 64 m 321.21 58.5 l 348.385 64 m 348.385 58.5 l 375.56 64 m 375.56 58.5 l 402.735 64 m 402.735 58.5 l 429.91 64 m 429.91 58.5 l ps
275.535 31 m (4.4n) s
a 429.91 64 m 429.91 53 l ps
a 457.085 64 m 457.085 58.5 l 484.26 64 m 484.26 58.5 l 511.435 64 m 511.435 58.5 l 538.609 64 m 538.609 58.5 l 565.784 64 m 565.784 58.5 l ps
411.41 31 m (4.6n) s
a 565.784 64 m 565.784 53 l ps
a 592.959 64 m 592.959 58.5 l 620.134 64 m 620.134 58.5 l 647.309 64 m 647.309 58.5 l 674.484 64 m 674.484 58.5 l 701.659 64 m 701.659 58.5 l ps
547.284 31 m (4.8n) s
a 701.659 64 m 701.659 53 l ps
a 728.834 64 m 728.834 58.5 l 756.009 64 m 756.009 58.5 l 783.184 64 m 783.184 58.5 l 810.359 64 m 810.359 58.5 l 837.534 64 m 837.534 58.5 l ps
688 20 m (5n) s
a 709 64 m 709 53 l ps
a 736.175 64 m 736.175 58.5 l 763.35 64 m 763.35 58.5 l 790.525 64 m 790.525 58.5 l 817.7 64 m 817.7 58.5 l 844.875 64 m 844.875 58.5 l ps
gr

绘制另一个轴。如果你改变那些部分的线宽,那么笔划会更宽。

答案 1 :(得分:1)

我想补充一些补充词,以配合肯的答案,这是IMO的正确观点。通过查看Postscript tag-info page可以收集语言的基础知识。阅读蓝皮书的前半部分(它非常简短,让您快速了解堆栈和运算符以及语法和所有内容)。然后你应该阅读绿皮书,了解程序结构的背景,以及定义了许多短名称的序言,以及看起来更像纯数据的脚本。

如果您这样做,那么您会发现Ken确实通过修改postscript为您提供了如何操作的答案。但是,“更好”的方式几乎总是通过修改实际的源材料来重新生成postscript(无论可能是什么,它可能更接近于该元素的“属性”),这也是非常正确的。


编辑:问题更新后。

正如肯所说,你实际上并不需要弄乱这条线

/sw /setlinewidth load def

这不是调用setlinewidth,而是将sw定义为较长名称的快捷方式。

因此,对于每个部分,您需要做两件事:

  1. 在开始时更改线宽
  2. 最后改回来
  3. 要相对于当前值更改宽度,可以使用currentlinewidth并进行一些数学运算。

    currentlinewidth 2 mul setlinewidth
    

    要将其更改回来,您可以执行反向操作,或使用额外的gsave ... grestore对对整个事物进行括号,或者将原始宽度保存在定义中并使用定义重置它。

    您可以使用gsave之类的长运算符名称或程序中定义的快捷键,例如gs

相关问题