如何在Post Script中修剪空格

时间:2012-12-25 16:16:23

标签: postscript

我每个月都有数百万个Post Script文件。每个文件各有4-5页。 除页数1外,每个页面的内容都很少。因此,虽然文件中的内容不是太大,但有不必要的纸张浪费。

我正在寻找一些工具,可以将第2页压缩到最后或修剪未使用的空白区域,以便最佳地使用papaer。

我有PSUTILS有PSNUP命令,但它也没有完全满足我的解决方案。

任何有想法的人都可以请求帮助解决这个问题。

我的样本帖子脚本文件可以从

下载

https://www.dropbox.com/s/2z9oirsvxzf13di/1010472622.ps

以上是三页后脚本文件。 Page 2& 3可以用棍棒打成最佳的纸张使用。

请详细指南

问候 code.box@rediffmail.com

1 个答案:

答案 0 :(得分:0)

这是一个有趣的问题。这是部分答案。

引用similar answer to a similar question,您必须解决两个问题:

  1. 如何确定每个页面的边界框,即包围页面上所有可见标记的最小坐标。
  2. 如何将多个输入页面组合到一个输出页面上。
  3. 对于#1,您可以使用Bounding Box output deviceGhostscript。使用如下调用:

    gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox 
    

    和Ghostscript打印到stdout一个边界框,如:

    %%BoundingBox: 14 37 570 719
    %%HiResBoundingBox: 14.308066 37.547999 569.495061 718.319158
    

    这四个数字是页面上可见内容的边界框左上角和右下角的x,y坐标。它们以默认的PostScript语言坐标系表示。

    对于#2,以某种方式捕获边界框输出,并使用它生成一个修改后的输出文件,其中每个输出页面上都有多个输入页面。

    如果您的PostScript语言文件遵循Document Structuring Conventions,则您有可能使用PostScript语言执行此操作。如果没有,那么您最好使用GhostScript将文件转换为PDF语言并在该级别进行组合。

    约定的重要属性是每个页面都是独立的,并且文件包含结构化注释,以便您可以检测输入文件中每个页面的开始和结束位置。此外,如果要将不同的输入文件合并到一个输出文件中,则输出文件需要包含每个输入文件的所有标头的所有资源。

    您需要编写逐页遍历输入文件的代码。它需要逐页生成输出文件。对于每个输出页面,它需要跟踪到目前为止页面上内容的边界框。

    对于每个输入文件,它会从步骤#1中查找边界框。它将它与输出页面的边界框进行比较。如果输出页面上有输入页面内容的空间,则:   *生成PostScript语言代码以保存图形状态,然后将坐标系向下转换为输出页面的空白部分,   *将输入页面内容复制到输出文件,   *生成代码以恢复图形状态

    如果没有空间,则完成当前输出页面,启动新的输出页面,然后执行上述操作。

    我不知道任何现有的,易于使用的工具可以执行此类页面内容拼版。对于熟悉PostScript语言和文档结构约定的程序员来说,编写这样的工具会很简单。编写基于PostScript语言的页面拼版程序是一项类似的任务。