pdfpages / pdfbook 适用于奇数尺寸的纸张

pdfpages / pdfbook 适用于奇数尺寸的纸张

我有一本排版为 105 毫米 x 180 毫米的书

这需要做成一本小册子,以签名形式打印在 A4 纵向纸上,并附上原书页并排. (即 105mm + 105mm = 210mm,因此应该合适)

如果我使用 pdfpages(或 pdfbook shell 脚本),我会将它们并排排列在横向纸张上。如果我告诉它非横向,它会将它们放在彼此的上方,这样旋转它们就angle=90无济于事了。

由于打印时会出现纸张纹理,我需要将它们并排放在肖像纸上。

问题和期望解决方案的图表

似乎没有一种angle=90landscape=truefalse或与明确输出 papersize的组合起作用。noautoscale

它看起来像 pdfpages,在设置时查看输出纸张尺寸signature,并决定使用2x11x2作为其nup,这样您就无法覆盖它。

那么,这是否可行,无需手动计算签名解决方案,只需逐页明确地导入内容?

注意:我不关心生成的 PDF 是纵向还是横向,因为打印时旋转很简单,我关心的是逻辑页面相对于物理页面的相对方向。

答案1

我使用两个或更多步骤pdfpages包以获取可打印的 PDF。让我用一个简单的例子来演示一下。

  • 首先,我们准备一本 105x180 毫米、16 页的书,原始格式。这是输入 PDF 文件 ( *latex mal-a5.tex)。frame实际制作时删除参数。
  • 其次,我们将获得的 PDF 文件转换为新的文件,横向,A4,签名 = PDF 中的页数(*latex mal-a5toa4.tex)。这是一个副产品。在生产中,我们可以自动获取 PDF 文件中的页数。您可以在 TeX.SX 上找到示例(例如参见https://tex.stackexchange.com/a/180947/48028https://tex.stackexchange.com/a/179247/48028,我在+和中使用\pdfximage了)。\pdflastximagepagespdflatexlualatex\XeTeXpdfpagecountxelatex
  • 最后,让我们转换新的 PDF 文件,根据奇数/偶数页进行简单旋转,纵向,A4(*latex mal-a4slides.tex)。希望这能有所帮助。这应该是适合打印的 PDF 文件(纵向、双面和长边打印)。

我附上了所有三个 TeX 文件和 PDF 文件的预览。

这是mal-a5.tex文件:

% *latex mal-a5.tex (twice)
\documentclass{article}
\paperwidth=105mm
\pdfpagewidth=\paperwidth
\paperheight=180mm
\pdfpageheight=\paperheight
\usepackage{tikz}

\begin{document}
\newcount\counter 
\counter=0
\loop
\advance\counter by 1
\newpage
\begin{tikzpicture}[remember picture, overlay]
\node[font=\bfseries\Huge\sffamily, scale=10] at (current page) {\the\counter};
\end{tikzpicture}
\ifnum\counter<16\repeat
\end{document}

输入文件:原书

这是副产品,mal-a5toa4.tex文件:

% *latex mal-a5toa4.tex
\documentclass[a4paper,landscape]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages={-},noautoscale,signature=16,frame]{mal-a5.pdf}
\end{document}

算法的副产品

这是最后一个文件,该mal-a4sides.tex文件。

% *latex mal-a4sides.tex
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\newcount\counter \counter=0
\loop
\advance\counter by 1
\ifodd\counter
  \includepdf[pages={\the\counter},noautoscale,angle=180]{mal-a5toa4.pdf}
\else
  \includepdf[pages={\the\counter},noautoscale]{mal-a5toa4.pdf}
\fi
\ifnum\counter<8\repeat
\end{document}

最终 PDF 已准备好打印

答案2

您可以使用以下方式重新排序签名pdf书。请注意,该程序不同且独立来自pdfbookpdfjam包(我是它的作者之一,也是当前的维护者。)

在您重新pdfbook排序页面后,我认为您应该能够使用pdfpages选项nup=2x1,landscape=false来生成最终的 PDF。

答案3

Malipivo 的答案很笼统,使用了pdfpages包。

您也可以使用命令行。以下是解决方案

$ pdfbook --short-edge --noautoscale true document.pdf
$ pdfjam --noautoscale=true --no-landscape=true --suffix out document-book.pdf

第一个命令制作小册子。第二个命令只是拼版小册子页面,而不缩放到纵向页面的中心。

关于短边与长边的说明

--short-edge第一个命令的参数需要包easyshi。如果您没有这个,并省略它,那么临时小册子将配置为长边双面打印(如果您在那个阶段打印它,这可能是您想要的),但更改为纵向会使其成为短边双面打印(您可能在打印机驱动程序中有一个选项,或者您可以手动执行此操作,因此您可能可以以这种方式打印,即使它不太常见)。将其设置为使初始小册子成为短边双面打印,意味着最终输出是长边,正如您所期望的那样。

答案4

作为在类似问题中回答过pdfpages查看输出纸张大小以决定是否使用 2x1 或 1x2 作为其 nup,并且可以对其进行破解以覆盖初始决定并始终使用 2x1 nup。以下 shell 命令使用pdfjam执行所有 latex 包装:

pdfjam --booklet true --paper a4paper --noautoscale true --preamble '\makeatletter\g@addto@macro\AM@prepare@signature{\def\AM@xnup{2}\def\AM@ynup{1}}' input.pdf

但是,在上面的输出中,每个奇数页都是上下颠倒的,这意味着在双面打印时,您必须翻转短边。如果您还想要长边双面打印,那么可以添加相同的技巧,即通过选项--short-edge翻转pdfbook每个奇数页来使用。

pdfjam --booklet true --paper a4paper --noautoscale true --preamble '\usepackage{everyshi}\makeatletter\EveryShipout{\ifodd\c@page\pdfpageattr{/Rotate 180}\fi}\g@addto@macro\AM@prepare@signature{\def\AM@xnup{2}\def\AM@ynup{1}}' input.pdf

编辑:下图显示了示例 input.pdf 的 PDF 页面缩略图和使用上述命令得出的两本小册子,由 PDF 文档查看器呈现(缩略图未按比例缩放)。

示例 input.pdf 的 PDF 页面缩略图以及由此衍生的两本小册子

为了生成 input.pdf,我使用了以下 LaTex 代码。

\documentclass{article}
\usepackage[papersize={105mm,180mm}, margin=5pt]{geometry}
\usepackage{tikz,tikzpagenodes}
\pagestyle{empty}

\begin{document}
\foreach \n in {1,...,16} {
\newpage
\begin{tikzpicture}[remember picture, overlay]
\draw[blue, line width=10pt, fill=green!10] (current page text area.south west) rectangle (current page text area.north east); 
\node[font=\bfseries\Huge\sffamily, scale=10] at (current page) {\n};
\end{tikzpicture}
}
\end{document}

相关内容