
Estoy usando pdflscape
para mis páginas horizontales en un documento vertical A5. Luego utilizo la siguiente línea de comando para preparar el PDF que se imprimirá en papel A4:
pdftk blank.pdf document.pdf output padded_document.pdf verbose && pdfnup --paper a4paper padded_document.pdf
El resultado padded_document-nup.pdf
, sin embargo, tiene todas las páginas horizontales todavía en formato horizontal en lo que equivale a un formato A6, en lugar de tenerlas giradas y en A5.
¿Hay alguna manera de rotarlos automáticamente para que aparezcan en el tamaño deseado? Sé que podría reemplazarlo, pdflscape
pero lscape
sigo olvidándolo y sería bueno tener una solución que no implique cambiar mi documento cada vez que quiero imprimirlo. Entonces, es un truco inteligente en el PDF o algo que puedo poner en mi línea 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 por cara con bordes de página (no el 2 por cara deseado sin bordes, pero ya entiendes la idea) se ve así:
que esdeberíaaspecto es este:
Fingí este último simplemente usando en
lscape
lugar de pdflscape
.
Respuesta1
pdfnup
usospdfjam
, que a su vez utiliza el paquete LaTeX pdfpages
. Este último conoce la opción rotateoversize
, desde eldocumentación:
Esta opción permite rotar páginas de gran tamaño. Por ejemplo, las páginas en orientación horizontal tienen un tamaño mayor que su contraparte vertical, porque no coinciden dentro del contorno de una página vertical sin rotarlas. De forma predeterminada, las páginas de gran tamaño se escalan y no se rotan. O
true
ofalse
(o ningún valor, lo que equivale atrue
). (Por defecto:rotateoversize=false
)
Esta opción se puede especificar en la línea de comando para pdfnup
o pdfjam
:
$ pdfnup --paper a4paper --rotateoversize true test.pdf
Respuesta2
¿Quieres algo como esto?
\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}
Respuesta3
Espero que este sea más útil que el otro. Puede convertir A4 o A5 (un tamaño único para el archivo de entrada), horizontal o vertical (una orientación para el archivo de entrada) a un archivo de formato A4 formado por dos páginas A5 fusionadas y orientadas al paisaje 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-*
Respuesta4
Si funciona lscape
para imprimir, ¿por qué no utilizar dicho script para imprimir la versión?
#!/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*