Ayuda con nautilus-script: Guardar con la fecha de creacion y en orden alfabetico

Imagen de cfoch
0 puntos

Hola, tengo este script, para unir varios PDF,

#!/usr/bin/env python
# -*- coding: latin-1 -*-

# Creado por Javier Rovegno

import sys, os

sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process

if Process.verifyCommands("pdftk%pdftk")==False:
sys.exit()

Process.ProcessTogetherFiles(
"pdftk $FILES$ cat output out.pdf", # comando a ejecutar
"pdf", # tipo de archivos
"") # mensaje final

Quisiera que en vez de que el nuevo documento sea out.pdf, me gustaria que fuera fecha.pdf, cuando pongo fecha, me refiero a fecha de creacion

Algo asi, si lo creo a las 5 con 2 minutos y 51 segundos, el resultado final seria

05:02:51.pdf

Se puede hacer algo asi?

Imagen de joseluis
+1
0
-1

En python no se como se haría pero ejecutando en un terminal

pdftk *.pdf cat output $(date +%H:%M:%S).pdf

te uniría todos los pdf del directorio donde estés situado en otro pdf que se llamaría H:M:S.pdf (siendo H la hora, M los minutos y S los segundos de ejecución).


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

+1
0
-1

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

Imagen de joseluis
+1
0
-1

Y si quieres complicarlo un poco más, pero poder utilizarlo desde el Nautilus (sería un Nautilus Script, que debes colocar en el correspondiente directorio) puedes crearte el siguiente script:

#!/bin/bash
for i in $NAUTILUS_SCRIPT_SELECTED_URIS; do
 pdfs="$i ${pdfs}"
done
pdftk ${pdfs} cat output $(date +%H:%M:%S).pdf

De esa manera te uniría todos los pdf que selecciones con el ratón.

El script anterior podría tener algún error porque no lo he podido probar pero si fuera así no creo que te cueste mucho solucionarlo ;)


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

+1
0
-1

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

Imagen de cfoch
+1
0
-1

Funciono pero raro, :D

Trate de juntar el capitulo 1, 2 y 3 de un libro, y al juntarlo en la primera hoja aparecia el captiulo 3 luego cuando terminaba el 3 aparecia el 2 y asi

O sea al reves, que va mal?

------ http://www.ubuntu-sud.com ------
Comunidad de Ubuntu en América del Sur

+1
0
-1

------ http://www.ubuntu-sud.com ------
Comunidad de Ubuntu en América del Sur

Imagen de joseluis
+1
0
-1

Imagino que te sale así por el nombre de los pdf de los que partes. Con *.pdf te salen una lista de los pdf ordenados, si no me equivoco, por orden alfabético, si por el motivo que sea el nombre del fichero que tiene el capítulo 3 es "menor" que el del 2 y este es "menor" que el del 1 entonces es lógico que te salga de esa manera.

En cualquier caso siempre puedes tú poner de forma explícita el orden en el que quieres que junte los pdf, para ello en lugar de *.pdf pones la lista de los ficheros pdf en el orden que te interese.

pdftk cap_1.pdf cap_2.pdf cap_3.pdf cat output $(date +%H:%M:%S).pdf

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

+1
0
-1

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

Imagen de cfoch
+1
0
-1

#!/bin/bash
for i in $NAUTILUS_SCRIPT_SELECTED_URIS; do
pdfs="$i ${pdfs}"
done
pdftk *.pdf cat output $(date +%H:%M:%S).pdf

probe eso, pero no une los pdf seleccionados, sino todos los que estan en la carpeta(en orden alfabetico)

------ http://www.ubuntu-sud.com ------
Comunidad de Ubuntu en América del Sur

+1
0
-1

------ http://www.ubuntu-sud.com ------
Comunidad de Ubuntu en América del Sur

Imagen de joseluis
+1
0
-1

Hay dos errores en el script

  1. en lugar de *.pdf deberías poner ${pdfs} (por eso lo genera con todos los pdf del directorio)
  2. escribí mal la generación de la variable pdfs ya que tal como lo puse va a poner los ficheros seleccionados ordenados al revés (en lugar de construirlo como "$i ${pdfs}" hay que ponerlo como "${pdfs} $i", es decir se trata de ir añadiendo al final de la variable el nombre de cada uno de los fichero y no al principio que es lo que había puesto en un primer momento)

El script debería ser como sigue:

#!/bin/bash

for i in $NAUTILUS_SCRIPT_SELECTED_URIS ; do
 pdfs="${pdfs} $i"
done

pdftk ${pdfs} cat output $(date +%H:%M:%S).pdf

Otra posibilidad sin usar la variable NAUTILUS_SCRIPT_SELECTED_URIS sería:

#!/bin/bash

while [ $# -gt 0 ]; do
 pdfs="${pdfs} $1"
 shift
done

pdftk ${pdfs} cat output $(date +%H:%M:%S).pdf

El problema que tiene esta última opción es que no funciona si el nombre de alguno de los pdf tiene espacios.

Editado
Quito la variable directorio que se me había quedado de unas pruebas que hice y en este caso no tenía sentido.


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

+1
0
-1

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

Imagen de joseluis
+1
0
-1

Si no he visto mal, en python para obtener la hora del sistema tienes:

datetime.datetime.now().strftime("%H:%M:%S")

por lo que tendrías que sustituir de alguna manera out por lo que devuelve lo anterior (esto creo que lo puedes investigar tú).

Por cierto, he visto que has añadido en el título del hilo la coletilla (sin solución), ¿significa eso que no te han servido las respuestas?, y en caso que fuera así ¿no sería mejor que pusieras qué es lo que te falla por si alguien encuentra la solución?.


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

+1
0
-1

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

Imagen de cfoch
+1
0
-1

lo probare y cuento

------ http://www.ubuntu-sud.com ------
Comunidad de Ubuntu en América del Sur

+1
0
-1

------ http://www.ubuntu-sud.com ------
Comunidad de Ubuntu en América del Sur