
Estou usando pdflscape
para minhas páginas paisagem em um documento retrato A5. Então utilizo a seguinte linha de comando para preparar o PDF para ser impresso em papel A4:
pdftk blank.pdf document.pdf output padded_document.pdf verbose && pdfnup --paper a4paper padded_document.pdf
O arquivo resultante padded_document-nup.pdf
, porém, tem todas as páginas paisagem ainda em paisagem no que equivale a um formato A6, ao invés de girá-las e em A5.
Existe uma maneira de girá-los automaticamente para que apareçam no tamanho pretendido? Sei que poderia substituir, pdflscape
mas lscape
esqueço-me sempre disso e seria bom ter uma solução que não envolvesse alterar o meu documento cada vez que o quero imprimir. Então, seja um truque inteligente no PDF ou algo que eu possa colocar na minha linha de comando.
\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}
Que como 4 páginas com bordas de página (não as 2 páginas desejadas sem bordas, mas essa é a ideia) fica assim:
O que édeveparece é isso:
Eu falsifiquei este último usando apenas
lscape
em vez de pdflscape
.
Responder1
pdfnup
usa pdfjam
, que por sua vez usa o pacote LaTeX pdfpages
. Este último conhece a opção rotateoversize
, desde odocumentação:
Esta opção permite girar páginas grandes. Por exemplo, as páginas na orientação paisagem são superdimensionadas em relação à sua contraparte retrato, porque não se ajustam ao contorno de uma página retrato sem girá-las. Por padrão, as páginas superdimensionadas são dimensionadas e não giradas. Ou
true
oufalse
(ou nenhum valor, que é equivalente atrue
). (Padrão:rotateoversize=false
)
Esta opção pode ser especificada na linha de comando para pdfnup
ou pdfjam
:
$ pdfnup --paper a4paper --rotateoversize true test.pdf
Responder2
Você quer algo como isso?
\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}
Responder3
Espero que este seja mais útil que o outro. Você pode converter A4 ou A5 (um tamanho exclusivo para o arquivo de entrada), paisagem ou retrato (uma orientação para o arquivo de entrada) em um arquivo de formato A4 constituído por duas páginas A5 mescladas e orientadas para paisagem por página.
#!/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-*
Responder4
Se funciona lscape
para impressão, por que não usar esse script para imprimir a versão:
#!/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*