【问题标题】:How to annotate PS or PDF from (Linux) command line without losing quality?如何在不损失质量的情况下从(Linux)命令行注释 PS 或 PDF?
【发布时间】:2012-01-12 00:42:33
【问题描述】:

是否有任何适用于 Linux 的命令行工具允许我使用文本或特定字体、颜色和大小来注释 PS 或 PDF 文件而不会降低质量?我试过 ImageMagick 的转换,结果 PDF 质量很差。

我有一个最初在 Adob​​e Illustrator 中创作的模板,我想从中生成 PDF,并在某些地方使用名称。我有一个巨大的名字列表,所以我想分批(不是交互式地)这样做。

如果有人有任何想法,我将不胜感激。 谢谢, 卡尔

【问题讨论】:

    标签: pdf command-line postscript adobe-illustrator


    【解决方案1】:

    我认为最好创建 PDF 表单并批量填写 pdftk fill_form

    $ pdftk form.pdf fill_form data.fdf output out.pdf flatten
    

    表单数据应该在Forms Data Format 中(它只是带有指定字段名称和值的 XML 文件)。
    注意flatten 命令。需要将填写好的表单转换为普通文档。

    另一种方法是创建一组“在某些地方带有名称”和透明背景的 PDF 文档,并在模板上分别pdftk stamp

    $ pdftk template.pdf stamp words.pdf output out.pdf
    

    【讨论】:

    • 这听起来很有趣——我会尝试看看我能不能让它工作。
    • 这正是我所需要的!谢谢!
    【解决方案2】:

    实现此目的的另一种方法是破解 postscript 文件本身。以前AI文件 postscript文件,可以直接修改;我不知道那是不是真的了。所以你可能需要导出它。

    为简单起见,我假设只有一个页面。因此,在最后会有一个对showpage 的调用(可能是通过另一个名称)。在 showpage 之前执行的任何绘图命令都会显示在页面上。

    您可能需要重新初始化图形状态 (initgraphics),因为文档的其余部分可能让这一切变得有趣,预计显示页面会在任何人注意到之前清理干净。

    要放置文本,您需要设置一种新字体(旧字体已被 initgraphics 无效)以点为单位测量位置(72 点/英寸,28.3465 点/厘米)。

    /Palatino-Roman 17 selectfont %so much prettier than Times
    x y moveto
    (new text) show
    

    要进行合并,您可以使用 perl:将文档的开头作为 HERE 文档发出,通过程序构造一些文本写入行,发出文档的尾部。这是generating postscript with PERL的示例

    或者您可以使用-- 选项($gs -q -- program.ps arg1 arg2 ... argn)从命令行(使用ghostscript)获取数据。程序可以通过名为 /ARGUMENTS 的数组访问这些参数。

    所以,假设你有一个漂亮的图形,一个可怕的小丑拿着一个大约 1 英寸宽、3 英寸高、左上角距离左侧 4 英寸、距离底部 4 英寸的空白标志。您可以将此代码插入到 ps 程序中,就在 showpage 之前。

    initgraphics
    /Palatino-Roman 12 selectfont
    4 72 mul 4 72 mul moveto
    ARGUMENTS {
        gsave show grestore 0 -14 rmoveto
    } forall
    

    现在你可以让他说些有趣的事情了 ($gs -- clown.ps "On a dark," "and stormy night...")。

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多