如何在 ubuntu 中打印 A6 书籍?(8 页拼版双面)

如何在 ubuntu 中打印 A6 书籍?(8 页拼版双面)

我想打印一本书并装订它,但我无法打印正确的页面顺序。

这本书有248页。

我想像这样打印它(双面),但分成两个“段”:

8 页拼版

按以下顺序从上到下、从左到右:

  1. 第一部分:1.1. 第一篇论文:正面:2,4,15,13 背面:16,14,1,3

    1.2. 第二篇论文:正面:6,8,11,9 背面:12,10,5,7

  2. 第二部分:等等……

我使用一张 A4 纸,然后将其水平和垂直折叠成 A6 格式。

是否有一个程序或脚本可以为我解决这个问题,以便将来的打印?

至少一个脚本遵循以下序列:2,4,15,13,​​16,14,1,3,6,8,11,9,12,10,5,7,18,20,31,29,32,30,17,19,22,24,27,25,28,26,21,23...

感谢您的帮助。

答案1

我有点迟到了,但有几种方法可以完成所要求的任务。为了帮助其他像我一样问过这个问题的人,我将推荐我在 Manjaro Linux 中测试过的三种工具,但它们在 Ubuntu 中也应该很容易安装和使用:

  1. PDF::拼大版
  2. pdfimpose
  3. jPDF 调整

PDF::拼大版

这是一个命令行脚本,由以下人员用 Perl 编写马可·佩索托,有几个方便的选项施加文档。PDF::Imposition 附带了允许用户在多个拼版布局中进行选择的架构。对于这个特定问题,要使用的架构是2x4x1,由丹尼尔·德雷南·埃尔阿瓦尔

首先,从综合 Perl 档案网络 (CPAN)使用以下命令:

cpan PDF::Imposition

然后运行:

pdf-impose.pl --schema "2x4x1" input.pdf output.pdf

pdfimpose

与第一个选项类似,pdfimpose也是一个命令行脚本。它由以下人员用 Python 编写:路易斯·帕特诺几乎没有依赖关系。它似乎没有与 PDF::Impose 一样强大,但它可以进行多种版面布局。

如果你对 Python 比 Perl 更熟悉,可以尝试使用 pip 下载并安装:

pip install pdfimpose

然后运行:

pdfimpose --size 2x2 input.pdf --output output.pdf

免责声明:得到的结果不同轻微地从所问的问题可以看出这里


jPDF 调整

jPDF Tweak 是一款 PDF 修改软件,根据其网站介绍,可以合并、拆分、旋转、重新排序、加水印、加密、签名以及以其他方式调整 PDF 文件. 它是用 Java 编写的迈克尔·希尔具有图形用户界面 (GUI)。对于这个特定问题,将使用 Shuffle/N-up 选项卡。此选项卡还提供布局预览,这有助于很多当尝试强加 PDF 时。

首先,下载并安装 jPDF Tweak。虽然它不在 Debian 或 Ubuntu 存储库中,但有可用的二进制文件适用于 x64 和 x86 架构。如果这不起作用,Windows 版本应该可以在 Wine 中正常运行。另一个黑客替代方案是从下载平均房颤,查看 PKGBUILD 并尝试重现安装。

安装 jPDF Tweak 后:

  1. 选择输入文件(例子)
  2. 选择输出文件(例子)
  3. 随机播放/N 向上标签:

    • 检查随机播放复选框。
    • 选择小册子 2 合 裁切預設。
    • 使用以下配置字符串:

    -8:!-5U0.5-100.0%-200.0%,+4U0.5-200.0%-200.0%,-8N0.5+0.0%+0.0%,+1N0.5+100.0%+0.0%,!+3U0.5-100.0%-200.0%,-6U0.5-200.0%-200.0%,+2N0.5+0.0%+0.0%,-7N0.5+100.0%+0.0%
    
    • 点击Use按钮更新设置;
    • 单击run按钮以拼版 PDF(例子)

我对 jPDF Tweak 唯一担心的是它已经 9 年多没有更新了,但是,它运行良好,并且效果很好。


其他选择:

您还可以探索的其他选项包括:

答案2

通常,应用程序按顺序输出页面,以便将一页打印到一张纸上。要将输出打印为书籍或小册子,需要进行后续修改。

有时,打印机驱动程序可以进行简单的转换,例如双面打印或在同一方向每张纸上放两页。将页面排序为简单的书帖可以由许多 PDF 实用程序处理(书帖是一组页面,通常在中间折叠在一起,并作为构成书籍的部分之一装订)。对于小型作业,也有许多网站可以为您进行转换。

您想要执行的操作不是我所知道的任何 PDF 软件的内置功能。它需要将整个文档分解为签名;以复杂的方式对正面和背面以及顶部和底部之间的页面进行排序;将页面布局为 4 页并旋转一半页面,将它们混合在一张纸内;将内容缩放到较小的尺寸;并进行调整以允许在正确的页面边缘进行装订和可能的修剪。您可以手动执行此操作,也可以使用脚本结合 PDF 实用程序执行此操作。为了让您了解脚本是什么样子,请参阅Ubuntu - 拼版或如何从文档中打印一本书,而这仅仅是将书页按一半大小排序以便签名。对于一本 248 页的书来说,这需要做很多工作。

有许多小册子打印程序,但大多数都不是为如此复杂的东西设计的(而且在 Linux 中运行的程序也不多)。你可以调查Pdf小册子。我没有用过,但它相当复杂。据我所知,它可以满足您的需要,但需要逐页进行一些手动设置(它允许对偶数页和奇数页进行单独设置,但在这种情况下这无济于事)。

当我还在使用 Windows 的时候,我大量使用一款名为点击书,它可以快速将任何文档转换为任何书籍或小册子格式,等等。我认为您想要做的是内置格式。如果不是,您可以定义格式。它适用于 Windows 和 Mac,但不适用于 Linux,并且无法在 Wine 中运行(我试过,可能与它们的 DRM 控制有关)。它现在的售价为 50 美元,尽管有 15 天的免费试用期。如果您只有一份工作,我会获得免费试用版并找到一台 Windows 或 Mac 计算机来运行它。如果您需要定期打印各种书籍和小册子格式,那么如果您可以随时使用 Windows 或 Mac 计算机,您将物有所值。我还没有找到它的 Linux 替代品。

答案3

您需要一些简单的工具来解决这个特定问题。首先,如果您使用的是 Linux,则应安装 Python(如果尚未安装)。任何版本的 Python 都可以完成这项工作。以下是安装它的命令:

sudo apt install python3

你还没完,如果你读了代码,你会发现我们正在使用一个名为 numpy 的库。要安装它,最简单的方法是通过“pip”

通过以下命令安装 pip:

sudo apt install pip

然后使用 pip 安装 numpy:

pip install numpy

现在剩下的就是将该脚本复制到一个新文件中:

import numpy as np
import sys

pages = int(sys.argv[1])

pages /= 8

if (pages % 2 == 0):
    pass
else:
    pages += 1

a = np.arange(1, pages*8+1).reshape(pages, 8)

final = []

for i in a:

    t = i[0]
    i[0] = i[0]
    i[0] = t

    t = i[1]
    i[1] = i[7]
    i[7] = t

    t = i[2]
    i[2] = i[2]
    i[2] = t

    t = i[3]
    i[3] = i[5]
    i[5] = t

    t = i[4]
    i[4] = i[6]
    i[6] = t

    t = i[7]
    i[7] = i[5]
    i[5] = t

for i in a:
    for j in i:
        final.append(j)

print(final)

然后另存为:

whatever.py

现在,要使用它,打开终端并输入此命令:

python whatever.py 123

请注意,123 是您的 pdf 的页数。将其更改为您拥有的页数。

输出将是一系列页面,如下所示:

[1, 8, 3, 6, 7, 2, 5, 4, 9, 16, 11, 14, 15, 10, 13, 12, 17, 24, 19, 22, 23, 18, 21, 20, 25, 32, 27, 30, 31, 26, 29, 28, 33, 40, 35, 38, 39, 34, 37, 36, 41, 48, 43, 46, 47, 42, 45, 44...]

现在您要做的就是复制不带括号的序列:“[”,“]”

然后打开您的文档,单击“打印”,如果您使用默认系统打印对话框,您将得到如下内容:

[图片1]

现在选择“范围”下的“页面”并粘贴不带括号的序列。

最后,单击页面设置选项卡并选择以下选项:

[图片2]

您可以“预览”您的文档以查看页面比例和顺序是否正确,或者直接按“打印”进行打印。

!!:这些说明仅适用于 1 张纸 2 个部分的 8 页拼版。

!!:我可能必须把它变成一个更复杂的程序,任何更新都会在这里。

你的书将会是这样的:

-----------------          -----------------
|       |       |          |       |       |
|       |       |          |       |       |
|   1   |   2   |          |   3   |   4   |    . . .
|       |       |          |       |       |
|_______|_______|          |_______|_______|

sheet 1 - top-front         sheet 1 - top-back

-----------------          -----------------
|       |       |          |       |       |
|       |       |          |       |       |
|   5   |   6   |          |   7   |   8   |    . . .
|       |       |          |       |       |
|_______|_______|          |_______|_______|

sheet 1 - bottom-front      sheet 1 - bottom-back

答案4

最基本的方法(自己做应该不难):

  1. 将页面提取成图像(例如下面的 pdfimages,其他的可能是更好的选择)
  2. 通过使用 ImageMagick/convert 等为每张纸合成 4 幅图像(使用您熟悉的任何脚本语言)。
  3. 打印2中的图像

$ pdfimages--帮助
pdfimages 版本 0.41.0
版权所有 2005-2016 Poppler 开发者 - http://poppler.freedesktop.org
版权所有 1996-2011 Glyph & Cog, LLC
用法:pdfimages [选项]  
  -f :要转换的第一页
  -l :要转换的最后一页
  -png :将默认输出格式更改为 PNG
  -tiff :将默认输出格式更改为 TIFF
  -j :将 JPEG 图像写入 JPEG 文件
  -jp2 :将 JPEG2000 图像写入 JP2 文件
  -jbig2 :将 JBIG2 图像写入 JBIG2 文件
  -ccitt :将 CCITT 图像写入 CCITT 文件
  -all :相当于 -png -tiff -j -jp2 -jbig2 -ccitt
  -list:打印图像列表而不是保存
  -opw:所有者密码(用于加密文件)
  -upw :用户密码(用于加密文件)
  -p :在输出文件名中包含页码
  -q :不打印任何消息或错误
  -v :打印版权和版本信息
  -h :打印使用信息
  -help :打印使用信息
  --help :打印使用信息
  -? :打印使用信息

注意:质量的选择由您(用户)决定;只需渲染更大的图像(= 更高的分辨率、像素数),然后将其输入到打印过程中。
这将允许打印过程创建更高质量的打印件,假设您将其设置为使用更高的分辨率,它必须遵循并匹配图像。
(请注意,pdfimages 似乎没有与分辨率相关的选项)

但是,在某个时候,提高图像分辨率的增益将会减小。

如果您一次渲染一个页面(甚至批量渲染),内存和磁盘要求将是可控的,甚至“很低”。

相关内容