【问题标题】:ghostscript ps2ps crops document adding some margins/ bordersghostscript ps2ps 裁剪文档添加了一些边距/边框
【发布时间】:2015-09-09 19:33:39
【问题描述】:

我觉得这个是菜鸟......但它来了:

让我们使用一个带有 PS 导出器的 Vector 程序(没有字体子设置:对于将来动态更改文本很重要),更具体地说是 Inkscape 0.46 版。 文档大小为 A4,让我们画一些非常靠近边框的线条和一个简单的文本,然后将 ps 导出为 noborder.ps:

一切都很好! postscript 文件的第一行是什么?

%!PS-Adobe-3.0
%%Creator: 0.46
%%Pages: 1
%%Orientation: Portrait
%%BoundingBox: 0 0 596 842
%%HiResBoundingBox: 0 0 596 842
%%DocumentMedia: plain 596 842 0 () ()
%%EndComments
%%Page: 1 1

现在我们需要从这个PS文件中生成一个PS文件(为什么?一些新的字体不能上传到打印机,动态文本被改变了。PS2PS是一个不错的选择,可以在之前嵌入字体和其他元素印刷)。让我们使用 ghostscript 8.7 中的 ps2ps。

user@server:/$ ps2ps noborder.ps whyborder.ps

非常好!运行时没有错误...但是...什么?边界?边距?裁剪?

让我们看一下whyborder.ps头文件:

%!PS-Adobe-3.0
%%Pages: (atend)
%%BoundingBox: 5 6 587 792
%%HiResBoundingBox: 5.000000 6.791406 586.732813 792.000000
%.........................................
%%Creator: GPL Ghostscript 870 (pswrite)
%%CreationDate: 2015/09/09 16:09:24
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%EndComments
%%BeginProlog
% This copyright applies to everything between here and the %%EndProlog:

为什么BoundingBox变了???为什么要添加边框、边距、裁剪? 我已经测试了诸如“-dEPScrop”、papersize 之类的选项……但裁剪仍然存在……为什么???

【问题讨论】:

    标签: border crop ghostscript postscript margins


    【解决方案1】:

    首先,停止使用古版本的 Ghostscript! 8.70 现在已经 6 岁了,当前版本是 9.16(很快就会被 9.18 取代)。

    其次,这样的实验不要使用脚本,直接使用命令行。旧版 GHostscript 中使用的设备是 pswrite,这是一个非常糟糕的实现,仅支持 1 级输出。当前代码使用 ps2write 设备,这是一种更强大、更灵活的解决方案。

    请注意,在所有情况下,通过 Ghostscript 运行输入都不会“嵌入字体”或“编辑”或“压缩”原始文件。发生的情况是,您的输入被解释为生成图形基元,这些图形基元被馈送到设备 API,然后相关设备处理这些基元。对于渲染设备,这意味着调用图形库将图元渲染到画布上。对于高级设备,这意味着重新发出原语,例如作为 PDF 操作。

    ANY 这样的处理会带来近似的固有风险,pswrite 设备更糟糕的是,大部分内容都呈现为图像。所以总的来说它真的不嵌入新字体,它只是嵌入字形的图片。这真的很糟糕,因为边界框取决于分辨率可能会导致严重的不准确。

    除非别无选择,否则您真的应该避免这样做。如果您确实必须这样做,请准备好接受妥协,不要使用过时的 Ghostscript 版本,也不要使用破旧的 pswrite 设备。

    【讨论】:

      【解决方案2】:

      谢谢肯斯;

      通过将 ghostscript 升级到 9.16 版并使用以下命令一切正常:

      user@server:/$ ps2ps -sPAPERSIZE=a4 noborder.ps whyborder916.ps
      

      这是一个古老而稳定的系统 (PHP/Bash/Ghostscript/CUPS),多年来一直作为工厂标签系统与旧的 postscript 打印机一起使用。最近需要更改字体样式; ps2ps 是“嵌入”字形和条形码的最佳选择(postscript 语言),它们会随着生产线和包装而动态变化,而无需更改打印机(来自不同制造商的不同型号)。由于 PostScript 是一种多年来几乎没有变化的语言,我从未想过要更改 GS 版本。

      在这一点上,这是一个真正的省钱!再次感谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-13
        • 2014-03-16
        • 1970-01-01
        • 2012-01-25
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多