以小册子的形式打印

过去我有一台打印机,它有一种小册子格式选项,可以将文档每次打印两页,并按照一种折叠后产生一个只有纸张一半大小的小册子,可以在中间订书钉固定。
但是我的现在的打印机不支持这个功能。我想使用一些工具或脚本来将A4大小的pdf转换为A5大小的小册子。
我找到了 这个页面,但是我遇到了一个错误:pdfjam ERROR: can't find pdflatex! 如何解决这个问题呢?有人知道其他的解决方案吗?
我使用的是Ubuntu 12.10 AMD64操作系统。

3如果找不到pdflatex,你应该安装它... sudo apt-get install texlive-latex-base。Acrobat Reader有一个软件书册选项,但是你的打印机需要支持双面打印。 - con-f-use
1我尝试了这个方法,但是又遇到了另一个依赖问题。pdfjam错误:未安装LaTeX包pdfpages.sty。看起来这个包并不是很稳定。我决定采用另一种解决方案。 - To Do
我安装了Adobe Reader,问题得到解决,但在Ubuntu 12.10 64位上并不那么简单。 - To Do
5使用 apt-file search pdfpages.sty 命令发现你还需要安装 texlive-latex-recommended 包。 - krlmlr
12个回答

使用texlive-extra-utils中的pdfbook命令。
  1. 安装texlive-extra-utils
    sudo apt-get install texlive-extra-utils
  2. 然后运行pdfbook命令:
    pdfbook [pdf文件]

这将输出一个以小册子形式的pdf文件。

source


这对我来说非常有效,同时还使用了“长边”双面打印选项,并每面打印一页。(在我的情况下,每张A4纸上可以打印四张A5纸;正面两张,背面两张。)唯一的缺点是最后制作的小册子太厚了,无法用我的订书机装订,但这并不是软件工具的错! - user
6使用pdfbook --short-edge mypdf.pdf进行“短边”打印,而不是默认的“长边”。 - Gabriel Staples
1关于我的使用情况来说,更好的选择是使用pdfnup。有关详细信息、示例和安装命令,请查看此链接:https://askubuntu.com/a/1095789/327339。 - Gabriel Staples
@GabrielStaples 你知道有没有任何能够添加页码的pdf书选项吗? - Astrid_Redfern
我找到了一个选项,可以添加页码,但其中一些是倒置的:pdfbook --short-edge NameOfDocument.pdf --pagecommand '' - 注意这是两个撇号,而不是引号。 - Astrid_Redfern
2命令似乎是 pdfbook2 版本为 22.04+,其他内容保持不变。 - neo post modern
1@neopostmodern 是的,这非常重要。应该在回答中进行编辑添加。 - Wilson

我从Ubuntu 16.04的软件库中安装了Boomaga。它解决了所有问题,并且不再依赖Acrobat Reader(现在在GNU/Linux上不再支持)。它可以与任何已安装的打印机一起使用。
它运行非常良好,打开速度快,渲染效果完美。
sudo apt install boomaga

What boomaga looks like


根据Acrobat Reader的依赖关系,请按照此答案中的说明进行操作。http://askubuntu.com/a/512665/485280。我可以确认,在执行apt命令后,它是有效的。我曾遇到过Boomaga在内页左侧给我留下了超大的边距(2.5英寸)的问题...除此之外,这是一个非常棒的程序。 - Bhikkhu Subhuti
1调整设置进行了一些实验,以确保正确打印小册子(注意:在我的情况下,将打印机配置为“打印机具有双面功能”,并将所有边距设置为“0”),但是之后效果非常好。我按照Github上的Ubuntu安装说明进行操作(我使用的是16.04 LTS版本)。 - Dɑvïd

太长没读(tl;dr)

pdfjam似乎是最好的选择:

pdfjam --landscape --signature 40 /path/to/your/document.pdf

我们想要的是一个或多个签名/小册子(一堆折叠成半页的纸张)。

signatures

pdfbook是一个选项,但并不完全令人满意,因为它只能创建一个小册子。为了创建多个小册子,它的"兄弟"pdfjam在这里帮助我们

pdfjam --landscape --signature 40 /path/to/your/document.pdf

创建一个沿着长边镜像的文档,并创建40个签名。
注意:对于--signature n: n必须是4的倍数。
还有pdfbook2。与pdfjam不同,它在manpage中显示了--signature选项。然而,与pdfjam相比,它似乎非常慢或者无法工作。

可以将装订方式设置在短边吗? - Carlos Pinzón
1pdfbook是pdfjam的一部分,因此应该存在short-edge选项。还可以在这里查看:https://github.com/DavidFirth/pdfjam - holzkohlengrill
1没有找到。最后我使用了bookletimposer。 - Carlos Pinzón
注意:pdfbook2自2020年以来没有更新。→ GitHub - Nicolai Weitkemper
pdfjam --longedgepdfjam --shortedge - milahu

我找到了一个解决方案。我安装了PDF XChange Viewer for Windows(通过Wine运行)。它有一个很好用的书籍格式打印选项。
另一个适用于Ubuntu的选择是安装Linux版的Adobe Reader。它也有书籍格式打印功能。在Ubuntu上安装Acrobat Reader booklet menu for acrobat

编辑

我刚刚发现了一个更好的选择,那就是一个叫做bookletimposer的软件包。

3最好称之为“变通方法”... - krlmlr
这个小册子排版工具对我来说有些奇怪。它会将某些图片从一页复制到紧挨着的另一页上,覆盖在文字上面。 - Steven Roose
6bookletimposer在Debian和Ubuntu中都可用。只需运行apt install bookletimposer,就可以轻松安装了。 - odinho - Velmont
2+1 对于 bookletimposer - Carlos Pinzón
+1 for bookletimposer - netbat

我找到的最佳解决方案在http://bernaerts.dyndns.org/linux/74-ubuntu/248-ubuntu-imposition-print-book(原问题中标记为“此页面”)。
给出的安装命令是
sudo apt-get install poppler-utils pdfjam texlive-extra-utils

这应该解决依赖关系的问题。

这是一个简单的逐步指南,包括在Nautilus中使用方便的右键点击(在Thunar中也很容易实现)。

我仍然想知道为什么这个功能没有包含在CUPS或一般的打印对话框中。

编辑于2019年10月:截至目前,我建议使用上面的答案,https://askubuntu.com/a/763721/142472 - 安装Boomaga


我找到了这个 Python-GTK 脚本,pdfbooklet,它可以接受一个 PDF 文件,重新排列页面生成一本小册子,并将其保存为 PDF。它有多种选项可以自动生成不同类型的小册子。
它依赖于 python-poppler。

只要打印机支持双面打印,与你的打印机无关,这与页面排序有关。

令人难以置信的是,Ubuntu 还没有这样一个简单的功能。

对于我的4页小册子,我解决了问题,将要打印的页面按照以下顺序排列:4、1、2、3。 对于8页小册子,顺序为8、1、2、7、6、3、4、5。对于16页的则是16、1、2、15、14、3、4、13、12、5、6、11、10、5……依此类推。虽然不够方便和即时,但可以应用。


1以前的打印机驱动程序有一个小册子功能。我现在使用的打印机驱动程序没有这个功能。 - To Do
也存在这样的工具:psbookpdfbook 可以帮你完成这个任务。请参考这篇相关的帖子:http://askubuntu.com/q/52269/30266 - krlmlr
在14.04.3 LTS版本中,打印对话框中指定的顺序似乎被忽略了。无论您如何指定顺序,页面都会按照数字顺序打印出来。已经使用三星CLX-3175N打印机进行了测试。 - Peterino
116pp = 16,1,2,15,14,3,4,13,12,5,6,11,10,7,8,9 ;) - Dɑvïd

我有同样的问题。就像你一样,我在尝试使用pdfjam时遇到了这些问题(除了它需要安装的大型软件包)。我在superuser上提出了一个问题,解决方案非常完美。

https://superuser.com/questions/596035/condensing-into-multiple-pdf-pages-per-sheet-via-command-line

我会在下面重新创建它,但请给原回答者点赞/认可。
to perform an IMPOSITION, nothing is better than Multivalent.jar (latest free version with tools inside, latest Multivalent build currently hosted on sourceforge - 2009 - has no more pdf tools)

you can download the Multivalent.jar build with tools from:

http://www.ziddu.com/download/1794145/Multivalent.tar.gz.html
http://ge.tt/#!/21OPDHX/v/4
http://dingodog.minus.com/mjhNX8Eiu
online man - http://multivalent.sourceforge.net/Tools/pdf/Impose.html

use:

java -cp path...to/Multivalent.jar tool.pdf.Impose -dim (rowsxcols) -paper (paper sizes where pages will be imposed) file.pdf

对于某些情况,您可能希望使用pdfnup。它允许您将多个页面打包在一个上面。
在Ubuntu上安装pdfnup的方法如下:
sudo apt install texlive-extra-utils

示例:

使用示例:

这将创建一个横向视图的每张纸上有2页并排的PDF文件,以便通过短边翻转打印。有关更多详细信息,请参阅man pdfnup

pdfnup --nup 2x1 mypdf.pdf

你可以像这样批量处理多个PDF文件(此示例取自man页面:man pdfnup):
pdfnup --nup 2x2 --suffix '2x2' --batch myfile1.pdf myfile2.pdf

“--sufix '2x2'”这部分的意思是将“2x2”作为后缀添加到输出文件名中,以便更容易识别刚生成的文件。

参考资料:

  1. Super User: 一个回答“如何将1页PDF转换为每张纸上有2页的PDF?”(请查看下面的评论)
  2. Super User: 另一个回答“如何将1页PDF转换为每张纸上有2页的PDF?”(请查看下面的评论)
  3. man pdfnup

相关内容:

  1. 对于任何想要将1或2页的PDF转换为横向排列的带有两个副本的PDF(非常适合打印传单)请查看我在这里的回答

我写了一个zsh脚本,可以将A4 PDF文件打印成小册子(在A3纸上)。
#!/bin/zsh

zmodload zsh/mathfunc

f="$1"; shift

if [[ ! -f "$f" ]]; then
    echo "Not a file: “$f”" >&2
    exit 1
fi

total_pages="$(pdfinfo "$f" | grep '^Pages:' | grep -Po '\d+$')"

pages="${2-$total_pages}"

sig="$(( int(ceil(pages / 4.) * 4) ))"

pdf="$(mktemp --suffix=.pdf)"

pdfbook --a3paper --signature "$sig" -o "$pdf" "$f" "1-$pages"

#two-sided-long-edge apparently only means *long edge* when in portrait mode
lpr \
    -o media=A3 \
    -o sides=two-sided-long-edge \
    -o landscape=true \
    "$pdf"

unlink "$pdf"

请注意,您的打印机配置可能比我的更正常,并且您实际上需要使用-o sides=two-sided-short-edge