gpt4 book ai didi

postscript - 如何在 Post Script 中修剪空白

转载 作者:行者123 更新时间:2023-12-04 00:30:12 24 4
gpt4 key购买 nike

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

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

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

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

我的示例后脚本文件可以从

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

以上是一个三页的 Post Script 文件。可以将页码 2 和 3 打成棒状以优化纸张使用。

请详细指导

问候'
code.box@rediffmail.com

最佳答案

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

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

  • 如何确定每个页面的边界框,即包围页面上所有可见标记的最小坐标。
  • 如何将多个输入页面合并到一个输出页面上。

  • 对于#1,您可以使用 Bounding Box output deviceGhostscript .使用如下调用:
    gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=bbox 

    和 Ghostscript 打印到标准输出一个边界框,如:
    %%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 语言并在该级别进行组合。

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

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

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

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

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

    关于postscript - 如何在 Post Script 中修剪空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032234/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com