ayuda con pequeña progresión muy simple

Imagen de Comparteomuere
0 puntos

hola, ando en busqueda de solucionar un problema que se me ha presentado
necesito imprimir un folleto el cual tengo en pdf y pensaba imprimirlo a un archivo en pdf
por ejemplo, si el libro tendria 20 paginas tendria qeu mandar dos paginas por cara en el orden 20,1,2,19,18,3,17,4...etc
el asunto es que queria crear un pequeño script que preguntara cuantas paginas tiene tu libro?
y que a partir de eso se generar la progresion
el nº de paginas seria la n y la progresion deberia ser 1,n,n-1,2,3,n-2,4,n-3, hasta que llegara a n/2
no es muy dificil, solo debo saber como hacer la pregunta, luego nombrar la variable como n y luego imprimir la progresión
como podria hacer esto en un SCRIPT?
porfavor ayuuda

Imagen de joseluis
+1
0
-1

La utilidad psbook (paquete psutils) ya hace lo que quieres, lo único es que parte de un archivo ps y genera otro ps. En este escrito dejé hace ya unos años unas lineas de su funcionamiento (junto a otras utilidades del mismo paquete).

Si no recuerdo mal con pdf2ps puedes transformar un pdf a ps, y con ps2pdf puedes hacer lo contrario, por lo que con esos 3 comandos puedes generar el pdf con las páginas preparadas para leer como si fuera un libro.

Aunque para hacerlo como cuadernillo, creo que el orden de las paginas debería ser:

  20 1 2 19 18 3 4 17 16 5 6 15 ...

Es decir

  n 1 2 n-1 n-2 3 4 n-3 ...

en lugar del que indicas:

  1,n,n-1,2,3,n-2,4,n-3

Si aun asi tienes curiosidad por generar una secuencia de numeros que marque las paginas en orden de cuadernillo, se me ocurre algo asi (suponiendo que el numero de paginas sea multiplo de 4, ya que si no es multiplo de 4 para que te salga en forma de cuadernillo tendrias que meter paginas en blanco hasta que obtengas un numero de paginas multiplo de 4).

  paginas=20
  grupos=$((paginas/4))
  i=1
  while [ $i -le ${grupos} ]; do
    ultima=$((${paginas}-2*($i-1)))
    inicial=$((1+2*($i-1)))
    echo -n "${ultima} ${inicial} $((${inicial}+1)) $((${ultima}-1)) "
    i=$(($i+1))
  done

Con independencia de si el numero de paginas es multiplo o no de cuatro el script podría quedar como sigue (es igual que antes, pero ahora la idea es modificar el numero de paginas al multiplo de 4 inmediato superior):

  paginas=22
  if [ ${paginas} -ne $((4*(${paginas}/4))) ]; then
    paginas=$((4*(1+${paginas}/4)))
  fi
  grupos=$((paginas/4))
  i=1
  while [ $i -le ${grupos} ]; do
    ultima=$((${paginas}-2*($i-1)))
    inicial=$((1+2*($i-1)))
    echo -n "${ultima} ${inicial} $((${inicial}+1)) $((${ultima}-1)) "
    i=$(($i+1))
  done

Por cierto, que se me olvidaba, para preguntar por el número de paginas lo puedes hacer con:

  echo -n "Introduce el numero de paginas: "
  read paginas
+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de Comparteomuere
+1
0
-1

Al final cree un script que quiero compartir
va con un pcoo de propaganda, ruego no se la quiten

DEBEN EJECUTARLO Y SELECCIONAR UN PDF. Al final les creará un PDF ordenado de dos por pagina y listo para imprimir como Libro.
pero antes deben instalarun par de cosas por eso les pide la contraseña

#!/bin/sh
#
# pasaralibro.sh v1
#
# El/la que escribió esta weá hizo combusión espontanea
#
# GNU GPL license

sudo apt-get install pdfjam psutils

FILE=`zenity --file-selection --title="Escoge el Libraco"`

pdf2ps "$FILE" libro2.ps|zenity --progress --text="Conviritiendo a .ps" && psbook -q libro2.ps libro3.ps|zenity --progress --text="Ordenado el .ps" && ps2pdf libro3.ps Ordenado.pdf|zenity --progress --text="Convirtiendo a pdf" && pdfnup --nup 2x1 Ordenado.pdf|zenity --progress --text="Ordenando a dos por página"&& rm libro2.ps libro3.ps Ordenado.pdf|zenity --info --text "Ya ta listo, el archivo se llama Ordenado2x1 y está en la carpeta desde donde abriste el script, Imprime las impares y luego por el reverso las pares

www.editorialsinnombre.tk edisinnombre@riseup.net."
;;

+1
0
-1