Cómo rotar automáticamente páginas horizontales de pdflscape al realizar n-upping

Cómo rotar automáticamente páginas horizontales de pdflscape al realizar n-upping

Estoy usando pdflscapepara 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, pdflscapepero lscapesigo 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í:

3 retratos, 1 paisaje

que esdeberíaaspecto es este:

4 retrato Fingí este último simplemente usando en lscapelugar de pdflscape.

Respuesta1

pdfnupusospdfjam , 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 trueo false(o ningún valor, lo que equivale a true). (Por defecto: rotateoversize=false)

Esta opción se puede especificar en la línea de comando para pdfnupo pdfjam:

$ pdfnup --paper a4paper --rotateoversize true test.pdf

Página 1 Página 2

Respuesta2

¿Quieres algo como esto?

2xA5 en A4

\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 lscapepara 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*

información relacionada