在 A4 纸上双面打印 A6 页面

在 A4 纸上双面打印 A6 页面

我有一份文件,长 78 页,格式为 A6 纸张大小。我需要将这些页面双面打印到 A4 纸张上。

样本布局开始: https://i.stack.imgur.com/rIyGB.png 示例布局结束

编辑2开始:

这样,如果这 78 页纸都可以打印在一张 A4 纸的两面,我就可以把很多张这样的纸(现在是 A6 纸)折叠、裁剪、堆叠起来,然后装订在一起。这是我的想法。笔记:(inv) 表示反转。

另一个问题:在这些 A4 变成 A6 的书籍中,应该怎么做才能实现签名?对于 A5 书籍来说,这很容易。

编辑2结束

我浏览了以下链接:

  1. 按照书本折叠顺序在一张双面 A4 纸上打印八页 A6 页面

  2. 按正确顺序在 A4 双面打印 A6 书籍

  3. 在 A4 纸上复印 A6 小册子

编辑开始

  1. 链接 (1) 和 (3) 讨论了在 A4 纸的两面打印“重复”的 A6 页面。但我需要一个解决方案,用于在 A4 纸的“两面”打印一本 78 页的 A6 书。

  2. 链接 (2):更接近我的需求。但只考虑了“八”页 A6 纸。我怎样才能将代码扩展到 78 页?

我不确定@AndrewStacey 发布的解决办法是否 按正确顺序在 A4 双面打印 A6 书籍也可以用于更大的书。如果他或某人可以澄清这一点,那就太好了。如果答案中提供的代码 按正确顺序在 A4 双面打印 A6 书籍进行详细评论/解释,以便任何人都能理解。疑问示例:我不明白应该在代码中哪里指定我的 A6 PDF 文件。

编辑结束

我已完成以下MWE操作,实现了单面打印的预期效果。但我们如何才能实现双面打印,以便我稍后可以裁剪、折叠和装订页面以形成 A6 尺寸的书?

\documentclass[a4paper]{article}
\usepackage[pdftex]{color,graphicx,epsfig}
\usepackage[margin=0in]{geometry}
\usepackage[final]{pdfpages}
\begin{document}
\includepdf[pages=-,nup=2x2,landscape=false,frame,noautoscale=true]{a6sized-doc.pdf}
\end{document}

请编辑我的问题/标签以便更清楚。

答案1

以下是对以下答案的改编:按正确顺序在 A4 双面打印 A6 书籍。它会改变顺序并将所需的页面颠倒过来。每组 8 页会根据指定的布局打印到两页上。代码旨在放入原始文档的序言中(代替\dopage下面的所有内容),因此这里只有一个 tex 文档。

\documentclass{article}
%\url{https://tex.stackexchange.com/q/638802/86}
%Adapted from \url{http://tex.stackexchange.com/q/279042/86}
\usepackage{pgfmorepages}

\pgfpagesdeclarelayout{8 on 2, book format}
{%
  \edef\pgfpageoptionheight{\the\paperheight}
  \edef\pgfpageoptionwidth{\the\paperwidth}
  \def\pgfpageoptionborder{0pt}
  \def\pgfpageoptionfirstshipout{1}
}%
{%
  \pgfpagesphysicalpageoptions
  {%
    logical pages=8,%
    physical pages=2,%
    physical height=\pgfpageoptionheight,%
    physical width=\pgfpageoptionwidth,%
    current logical shipout=\pgfpageoptionfirstshipout%
  }
  \pgfpagesphysicalpage{1}{}
    \pgfpageslogicalpageoptions{1}
  {%
    rotation=180,
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{8}
  {%
    rotation=180,
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{4}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight},%
    }%
    \pgfpageslogicalpageoptions{5}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight},%
    }%
  \pgfpagesphysicalpage{2}{}
    \pgfpageslogicalpageoptions{7}
    {%
      rotation=180,
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{2}
    {%
      rotation=180,
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}%
    }%
    \pgfpageslogicalpageoptions{6}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight},%
    }%
    \pgfpageslogicalpageoptions{3}
    {%
      border shrink=\pgfpageoptionborder,%
      resized width=.5\pgfphysicalwidth,%
      resized height=.5\pgfphysicalheight,%
      center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight},%
    }%
}


\pgfpagesuselayout{8 on 2, book format}

\newcommand\dopage{%
\noindent\resizebox{.99\linewidth}{!}{Page \thepage}
  \newpage}

\begin{document}
% The document goes here
\dopage\dopage
\dopage\dopage
\dopage\dopage
\dopage\dopage
\dopage\dopage
\dopage\dopage
\dopage\dopage
\dopage\dopage
\end{document}

第一页 第二页 第三页 第四页

(文本大小不同是因为每​​页文本都会调整为页面的宽度,但这意味着会根据不同的比例因子Page 1调整Page 11大小。)

答案2

编辑我可能误解了原作者的意图,John Kormylo 的回答可能正是我想要的。我的意图是打印所有纸张,然后将它们折叠在一起(而不是一张接一张地折叠),然后装订并裁剪。如果你有几张纸,把它们折叠在一起两次变得相当麻烦……所以我只留下这个答案供后人参考。至少,找到这个算法很有趣:)

编辑2:我想我写编辑的时候有点累了。如果你将每张纸单独折叠一次(水平折叠),然后将它们堆叠起来,装订起来,然后再进行垂直折叠,我的解决方案确实有效。如果你有切纸机,在顶部切 1 毫米(如果可以的话,甚至更少),你的 A6 小册子就完成了。

另一种方法是,将每张纸分别折叠,然后将它们堆叠在一起,第一张在左边,最后一张在右边。在这种情况下,装订后,它看起来不像一本普通的小册子。

例如,如果你有 4 张纸上的 32 页,我的答案是给你一本这种形式的小册子:

在此处输入图片描述

此形式的其他内容:

在此处输入图片描述

回答:

在此处输入图片描述

如果这就是您要找的东西,下面就是我获取它的方法。

我制作了一份 78 页的 pdf 文件(名为numbered-pages.pdf),内容如下:

\documentclass[a6paper]{article}

\usepackage{pgffor,graphicx}
\pagestyle{empty}
\begin{document}
\foreach \p in {1,...,78}
{
\vspace*{\stretch{1}}


{\centering\resizebox{!}{7cm}{\p}\par}

\vspace*{\stretch{1}}
\newpage
}
\end{document}

然后,我编写了一个 perl 脚本,以便找到 78 页所需的重新排序,包括哪些页面应该旋转。我调整了输出以适应该pdftk工具的格式。


#!/usr/bin/perl
use strict; 
exit if $#ARGV != 0;
my $total = $ARGV[0];
my $arrondi = $total;
if ($total%8) {$arrondi+=8-$total%8;}

exit if ($total < 1);

my $feuilles = $arrondi/8;

my $liste = "";

for (my $i=0; $i<$feuilles;$i++)
{
  my $init = $i * 4 + 1;
  my $final = $arrondi - $i * 4;

  foreach my $page 
       ($init,
        $final,
        $init+3,
        $final-3,
        $final-1,
        $init+1,
        $final-2,
        $init+2,)
  {
    if ($page > $total){$liste .= "E ";}
    elsif ($page == $init or $page == $final or $page == ($init+1) or $page == ($final -1))
    {$liste .= 'A'.$page.'south ';}
    else
    {$liste .= 'A'.$page.' ';}
  }
}
$liste .= "\n";
print $liste;

调用脚本8on2book.pl并请求

$ 8on2book.pl 78

假设有 78 页,则输出

A1south E A4 A77 E A2south A78 A3 A5south A76south A8 A73 A75south A6south A74 A7 A9south A72south A12 A69 A71south A10south A70 A11 A13south A68south A16 A65 A67south A14south A66 A15 A17south A64south A20 A61 A63south A18south A62 A19 A21south A60south A24 A57 A59south A22south A58 A23 A25south A56south A28 A53 A55south A26south A54 A27 A29south A52south A32 A49 A51south A30south A50 A31 A33south A48south A36 A45 A47south A34south A46 A35 A37south A44south A40 A41 A43south A38south A42 A39 

像这样将其集成到命令行中pdftk。它需要同一目录中有一个 1 页的空白 pdf 文件(称为page-blanche.pdf)。

$ pdftk A=numbered-pages.pdf E=page-blanche.pdf cat A1south E A4 A77 E A2south A78 A3 A5south A76south A8 A73 A75south A6south A74 A7 A9south A72south A12 A69 A71south A10south A70 A11 A13south A68south A16 A65 A67south A14south A66 A15 A17south A64south A20 A61 A63south A18south A62 A19 A21south A60south A24 A57 A59south A22south A58 A23 A25south A56south A28 A53 A55south A26south A54 A27 A29south A52south A32 A49 A51south A30south A50 A31 A33south A48south A36 A45 A47south A34south A46 A35 A37south A44south A40 A41 A43south A38south A42 A39 output 8on2-ordered-pages.pdf

这样您将得到 80 张重新排序和旋转的页面,称为8on2-ordered-pages.pdf,可以进行 1 张双面打印。

现在,如果您的打印界面有此选项,您可以要求打印机以 4 合 1 的方式打印(请注意,它通常会在页面之间和边框上添加边距,因此请谨慎使用此选项)。

否则,使用pdfpages来生成最终的 4 对 1 pdf,然后进行双面打印:

\documentclass[a4paper]{article}

\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-,nup=2x2]{8on2-ordered-pages.pdf}
\end{document}

我让读者把这些都打包成一个脚本,作为练习。核心是 perl 脚本中的算法。在其他答案以及链接的问题和答案中,没有解决这个问题。例如,对于 8 页,顺序是 1 8 4 5 7 2 6 3,但对于 16 页,顺序不是 1 8 4 5 7 2 6 39 16 12 13 15 10 14 11,但 116413 152143 51289 116107.在其他答案中,超过 8 页的问题采用了不同的解决方法,请参阅我在此答案顶部的编辑。

如果pdfpages可以旋转页面(或者可以吗?),这也是一个很好的解决方案,因为它可以动态创建空白页,而这是pdftk无法做到的。

答案3

这假设您希望在每个折叠的 A4 页面中放入 8 张连续的 A6 页面,而不是将整个文档裁剪、堆叠并装订在一起(杂志样式)。不确定您想要 A4 封面做什么,但最简单的解决方案就是在循环之前和之后添加 A4 页面。

\documentclass[a4paper]{article}
\usepackage[margin=0in,noheadfoot]{geometry}
\usepackage[export]{adjustbox}
\usepackage{color,graphicx,epsfig}
\pagestyle{empty}% off page anyway
\parindent=0pt

\newcommand{\filename}{test7}
\newcounter{pzero}

\begin{document}
\loop \ifnum\value{pzero}<24\relax% number of pages
  \includegraphics[page={\numexpr\value{pzero}+1},rotate=180,origin=c]{\filename}%
  \includegraphics[page={\numexpr\value{pzero}+8},rotate=180,origin=c]{\filename}\par
  \includegraphics[page={\numexpr\value{pzero}+4}]{\filename}%
  \includegraphics[page={\numexpr\value{pzero}+5}]{\filename}\par
  \includegraphics[page={\numexpr\value{pzero}+7},rotate=180,origin=c]{\filename}%
  \includegraphics[page={\numexpr\value{pzero}+2},rotate=180,origin=c]{\filename}\par
  \includegraphics[page={\numexpr\value{pzero}+6}]{\filename}%
  \includegraphics[page={\numexpr\value{pzero}+3}]{\filename}\par
  \addtocounter{pzero}{8}%
\repeat
\end{document}

Test7.pdf 使用以下方式创建

\documentclass{article}
\usepackage[a6paper]{geometry}
\usepackage{lipsum}
\begin{document}
\lipsum[1-42]
\end{document}

在我原来的解决方案中,如果页数不是 8 的倍数,多余的页面就会显示在中间。此版本从中间向外工作。

额外的页面可以显示在开头或结尾,或两者皆有,具体取决于您如何选择中间页面。请注意,奇数中间页面将反转偶数/奇数页面的左/右属性。

\documentclass[a4paper]{article}
\usepackage[margin=0in,noheadfoot]{geometry}
\usepackage[pdftex]{color,graphicx,epsfig}
\usepackage{paracol}

\pagestyle{empty}% off page anyway
\parindent=0pt
\newcommand{\filename}{test7}
\newcounter{plow}
\newcounter{phigh}
\setcounter{plow}{12}% middle page (even)
\setcounter{phigh}{\value{plow}}
\newcommand{\pmax}{23}% last page
\globalcounter*
\columnsep=0pt

\begin{document}
\begin{paracol}[2]{4}
\loop \ifnum\value{plow}>0
    \includegraphics[page=\value{plow}]{\filename}
    \addtocounter{plow}{-1}%
  \else
    \vspace*{0.5\textheight}
  \fi
  \switchcolumn
  \ifnum\value{phigh}<\pmax\relax
    \stepcounter{phigh}%
    \includegraphics[page=\value{phigh}]{\filename}
  \else
    \vspace*{0.5\textheight}
  \fi
  \switchcolumn
  \ifnum\value{phigh}<\pmax\relax
    \stepcounter{phigh}%
    \includegraphics[page=\value{phigh}]{\filename}
  \else
    \vspace*{0.5\textheight}
  \fi
  \switchcolumn
  \ifnum\value{plow}>0
    \includegraphics[page=\value{plow}]{\filename}
    \addtocounter{plow}{-1}%
  \else
    \vspace*{0.5\textheight}
  \fi
  \switchcolumn
\ifnum\pmax>\numexpr\value{phigh}-\value{plow}\relax\repeat
\end{paracol}
\end{document}

相关内容