使用 Linux 命令自动化印前排版

4 位读者喜欢这篇文章。
How to upgrade your Fedora Linux system with DNF

Opensource.com

借助一些简单的开源命令,您可以大大减少为打印准备工作所需的工作量。

对于任何设计师来说,付梓印刷都是一个激动人心的时刻。您的辛勤工作最终被渲染成精美的 PDF,您将其发送到大型印刷厂,最终您去杂志店或书店,就能看到您的辛勤成果展示在众人面前。

但在该过程的字里行间,从桌面设计到印刷页面,需要发生相当多的流程。最明显的是内容和设计本身,其次是布局,最后是页面管理和帖订的生成。本文将介绍最后一部分,然后在下个月我将回顾讨论使用 Scribus 进行布局。

我在为印刷准备内容时使用了一些 Linux 工具,它们都从 Unix shell 运行。这可能看起来很可怕,尤其是如果您像许多设计师一样是视觉型的人,但是当您面对一本 300 页的书并且必须生成印刷版面时,您最不想要的就是一个点击式的页面管理器,它迫使您手动放置每一页。这正是 shell 命令的优势所在:重复、无脑、枯燥的工作,您希望只需按一下按钮就能为您完成。

印刷版面

一张纸有多少面?

如果您说“两面”,那么您(出乎意料地)错了!至少在专业印刷中,页面可以有面或更多面。当然,不是物理意义上的面,但是当您打印时,您通常在一张纸的每一面打印两“页”,从而在一张纸上制作出四“页”。

一张纸,其每一面都包含较小的“页”,用于印刷,称为帖订

Linux Commands for Pre Press

我是 DIY 的爱好者,因此值得一提的是,即使您不打算以正式意义上的去印刷厂付费进行专业印刷作业,理解帖订也具有强大的力量。只需以正确的版面设计小册子或宣传册,您就可以创建简单的 8 页或 16 页的可折叠小杂志,您可以在家中打印和“装订”(实际上,只需切割和折叠)。

这一切意味着您可以按照“阅读器版面”布局设计您的作品,即读者实际查看您的作品的顺序和布局,然后输出为 PDF 以将您的设计导入到打印机(硬件,而不是人)通信的 PostScript 语言中,然后转换为印刷版面以进行实际的物理印刷行为。

PDFJam 和 Pdfbook

一些印刷厂很乐意自己将您的阅读器版面转换为印刷版面,因此您应该尽早与您的印刷厂沟通,以了解他们的要求和偏好。但是,我与一些印刷厂有过不好的经历,因为通常他们的工作流程涉及在某些 Adobe 产品中打开 PDF 阅读器版面,以便将页面重新排序为印刷版面。这似乎是一个明智的(尽管不是开源的)解决方案,但有时 Adobe 产品会篡改矢量路径或尝试转换或调整字体大小(或者可能是对要使用的字体感到困惑?实际上我不确定问题是什么,但我知道结果,而且它不好看),并且设计出来的东西与发送的东西不同。顺便说一句,这破坏了 PDF 格式的目的。因此,我更喜欢在可能的情况下发送我自己的印刷版面;这切断了中间人,基本上将印刷厂用作打印服务器和纸张库存供应商。

有几种方法可以将 PDF 转换为印刷版面,但最简单的工具是 PDFJam,这是一组 shell 脚本,可以为您完成所有繁重的数学运算和重复的页面调整工作。

处理 PDF 通常依赖于 Java 或 LaTeX;PDFJam 依赖于后者,因此健康的 texlive 安装至关重要。当我说是“健康的”时,我的意思是在您的 Linux 发行版的软件仓库中搜索 texlive,并安装您找到的所有内容。至少,您应该安装 texlivetexlive-extra-utils,其中应包含 pdflatex

PDFJam 是主脚本,但它捆绑了一些较小的包装器脚本,以简化常见任务。

一个简单的例子

$ pdfbook --landscape slackermedia_14.2.pdf 

这会生成一个 2-up(四页帖订)、双面可打印(沿纸张长边)的印刷版面,作为本例中名为 slackermdia_14.2-book.pdf 的文件。打印该文件,您就有了可以装订成册的纸张,当阅读时,其顺序与您设计时阅读的顺序相同。

pdfbook 命令只是一个更复杂的 pdfjam 的简化解析器。这是一个 Pdfbook 作为纯 pdfjam 命令的功能示例

$ pdfjam --booklet 'true' --landscape \
--signature '4' --landscape slackermedia.pdf \
-o slackermedia.pdf

所有辅助脚本都解析为更复杂的 pdfjam 命令,并且每个脚本在完成任务后都会准确地告诉您运行了什么。使用您最习惯的任何一个。

pdfnup

有时您不是在打印书籍,或者您是在打印书籍,但您需要的不仅仅是 2-up。也许您需要 n-up。如果您需要,您可以使用 pdfnup 命令。

我最近在家里打印了一个类似 RPG 的卡牌游戏,所以我需要一个 9-up 版面。先撇开循环不谈(这不是 Bash 教程,所以我将其简化),该命令归结为

$ pdfnup --nup 3x3 --suffix '3x3' \
`\ls -1 *.png | head -n9` \
&& mv -i `ls -1 *.png | head -n9` prepped/

结果是一个卡片矩阵,准备切割。

frontback

Cardtable

PDFtk

除了 PDFjam 之外,另一个用于印前的主要 PDF 处理应用程序是 PDFtk。这个方便的命令专门用于分离和连接 PDF 文档。

我对 PDFtk 的两个主要用途是将扉页和封底添加到 PDF,以及任何时候将多个 PDF 打印为一个文档更方便的时候。

连接多个 PDF 文件很简单;它是手册页中提供的示例之一,因此这是一个非常常见的用途

$ pdftk ch1.pdf ch2.pdf cat output book.pdf

对于多个 PDF,请使用通配符

$ pdftk *.pdf cat output book.pdf 

ImageMagick

ImageMagick 确实是一个“瑞士军刀”应用程序。与 pdfjam 类似,它由几个较小的特定于任务的命令组成,几乎所有命令都对设计师有用。它确实值得单独写一篇文章,尽管其自身广泛而优秀的文档已经很好地涵盖了这一点。

我使用 ImageMagick 来快速转换所需的图像格式。它很容易编写脚本,因为它是一个 Unix 命令,所以您可以将其合并到 Makefile 或构建脚本中。例如,如果我的教科书的所有源图像都是 SVG 格式,并且由于某种原因我需要将它们栅格化,那么

$ for FILE in *svg ; do \ 
convert $FILE -density 300 $FILE.png; \ 
done 

它还可以方便地转换为 PDF,以防您的打印机接受 PDF

$ convert image.tiff image.pdf 

该工具的功能远不止转换;正如文档所揭示的那样,您可以调整图像大小和处理图像,几乎与使用像 GIMP 这样的 GUI 工具一样多。正如我在我的半无用玩具文章中提到的,甚至有来自用户的 预制脚本,这些脚本将使一些繁重的工作变得出奇地简单。

将 Linux 带到印刷

借助这些简单的命令,您可以大大缩短订购作品的印刷版和网络版所需的时间。更重要的是,您可以保持对产品质量的控制;您发送给打印机的内容将与您收到的内容完全相同,并且整个工作流程可以编写脚本,因此您只需弄清楚一次即可。

这一切构成了一个强大且可定制的系统。今天就设计您的系统!

Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,而且经常同时工作。

1 条评论

Seth,这里有一些很棒的工具。我已经有一段时间没有使用 PDFjam 和 Pdfbook 了。我想我需要再次看看它们,用于我正在考虑的一个项目。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.