我在 A5 纵向文档中使用pdflscape
横向页面。然后我使用以下命令行准备要在 A4 纸上打印的 PDF:
pdftk blank.pdf document.pdf output padded_document.pdf verbose && pdfnup --paper a4paper padded_document.pdf
但最终结果padded_document-nup.pdf
是,所有横向页面仍为横向,相当于 A6 格式,而不是旋转并变成 A5 格式。
有没有办法自动旋转它们,使它们以预期的大小显示?我知道我可以用 替换,pdflscape
但lscape
我总是忘记,如果有一个解决方案不需要每次打印时都更改我的文档,那就太好了。所以要么在 PDF 中耍个小聪明,要么在命令行中输入一些东西。
\documentclass[a5paper]{article}
\usepackage{mwe}
\usepackage{pdflscape}
\begin{document}
\blindtext\blindtext
\begin{landscape}
\thispagestyle{empty}
\begin{figure}
\includegraphics[width=\linewidth]{example-image-a}
\caption{Landscape figure}
\end{figure}
\end{landscape}
\blindtext\blindtext
\blindtext\blindtext
\end{document}
作为具有页面边框的 4 合 1 格式(不是所需的无边框的 2 合 1 格式,但您应该明白我的意思)如下所示:
什么应该看起来像这样:
lscape
我通过使用而不是 来 伪造最后一个pdflscape
。
答案1
pdfnup
使用pdfjam
,而后者又使用 LaTeX 包pdfpages
。后者知道该选项rotateoversize
,来自文档:
此选项允许旋转超大页面。例如,横向页面相对于纵向页面而言尺寸过大,因为如果不旋转它们,它们就无法与纵向页面的轮廓相匹配。默认情况下,超大页面会缩放,不会旋转。要么 要么
true
(false
或没有值,相当于true
)。(默认值:rotateoversize=false
)
可以在命令行中为pdfnup
或指定此选项pdfjam
:
$ pdfnup --paper a4paper --rotateoversize true test.pdf
答案2
你想要这样的东西吗?
\documentclass[a5paper]{article}
\usepackage{mwe}
\usepackage{pdflscape}
\usepackage{pgfpages}
\pgfpagesdeclarelayout{my 2up}
{
\def\pgfpageoptionborder{0pt}
}
{
\pgfpagesphysicalpageoptions
{%
logical pages=2,%
physical height=\paperwidth,%
physical width=\paperheight,%
}
\pgfpageslogicalpageoptions{1}
{%
resized width=.5\pgfphysicalwidth,%
resized height=\pgfphysicalheight,%
center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{2}
{%
resized width=.5\pgfphysicalwidth,%
resized height=\pgfphysicalheight,%
center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}%
}%
}
\pgfpagesuselayout{my 2up}[a4paper]
\begin{document}
\blindtext\blindtext
\begin{landscape}
\thispagestyle{empty}
\begin{figure}
\includegraphics[width=\linewidth]{example-image-a}
\caption{Landscape figure}
\end{figure}
\end{landscape}
\blindtext\blindtext
\blindtext\blindtext
\end{document}
答案3
我希望这个比另一个更有用。您可以将 A4 或 A5(输入文件的唯一大小)、横向或纵向(输入文件的一个方向)转换为 A4 格式文件,每页由两个 A5 合并且横向的页面组成。
#!/bin/bash
IFS='
'
FILE_EXT=$(echo "$1" | cut -f2 -d '.')
# Vérifier si fichier pdf
if [ "$FILE_EXT" != pdf ]
then
echo "Attention, le fichier $1 n'est pas un fichier .pdf"
exit
fi
FILE_NAME=$(echo "$1" | cut -f1 -d '.')
# Détecter la présence du fichier en .pdf
if [ ! -e "./$FILE_NAME.pdf" ]
then
echo "Attention, le fichier $FILE_NAME.pdf n'existe pas"
exit
fi
X=$(pdfinfo $FILE_NAME.pdf | grep 'Page rot:' | cut -d":" -f2)
if [ $X -eq 0 ] || [ $X -eq 180 ] ;
then echo "portrait"
pdftk $FILE_NAME.pdf cat 1-endright output sortie-0.pdf
else echo "landscape"
cp $FILE_NAME.pdf sortie-0.pdf
fi
echo '\documentclass[a4paper]{article}' > sortie-1.tex
echo '\usepackage{pdfpages}' >> sortie-1.tex
echo '\begin{document}' >> sortie-1.tex
echo "\includepdf[pages=-,nup=1x2]{sortie-0.pdf}" >> sortie-1.tex
echo '\end{document}' >> sortie-1.tex
pdflatex sortie-1.tex
mv sortie-1.pdf "${FILE_NAME}-Sortie.pdf"
rm sortie-*
答案4
如果它适用lscape
于打印,为什么不使用这样的脚本来打印版本:
#!/bin/bash
IFS='
'
cat $1 | sed "s/pdflscape/lscape/g" > Sortie-0.tex
pdflatex Sortie-0.tex
pdfnup --paper a4paper Sortie-0.pdf -o Sortie-1.pdf
rm Sortie-0*