Fusionar archivos PDF con Automator

0

Estoy escaneando mi correo y termino con dos versiones: front & atrás.

Los archivos se denominan: scanf 01.pdf & scanb 01.pdf

Escaneo unas 40 páginas al día, por lo que termina en algunas listas.

Ahora, con automator, he hecho lo siguiente:

  1. Obtener elementos seleccionados del buscador # "scanf 01.pdf" & "scanb 01.pdf"
  2. Combinar páginas PDF
  3. Mover los elementos del Finder # al escritorio
  4. Nombre # de artículo único para que no sea un nombre aleatorio, sino "Scan.pdf"
  5. Agregue la fecha o la hora # "Escanear 2013-01-07.pdf"
  6. Hacer secuencial # "Escanear 2013-01-07 01.pdf" (es al menos la idea)
  7. Elementos del buscador de etiquetas # Agrega una etiqueta roja, así que todavía no la he visto

El paso 6 no funciona, ya que la secuencia comienza de nuevo cada vez que selecciono dos archivos nuevos. Entonces dice "ya existe el nombre", después de eso se detiene.

Preguntas:

  1. ¿Cómo puedo hacer que el paso 6 funcione?
  2. ¿Hay algo que fusiona automáticamente los archivos, de modo que Scanf 01.pdf se fusiona con Scanb 01.pdf y que Scanf 02.pdf se fusiona con Scanb 02.pdf, y así sucesivamente. Como mi configuración actual de automator requiere que seleccione los dos archivos.
pregunta Maurice Kroon 07.01.2013 - 16:47

2 respuestas

1

Realmente no probé esto, pero podrías usar un script de shell en su lugar.

#!/bin/bash

join="/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py"
date=$(date '+%Y-%m-%d')
last=$(ls ~/Desktop/$date*.pdf 2> /dev/null | tail -n1 | sed -E 's/.* 0*(.*)\.pdf$//g' || 0)

cd ~/Documents/Scanned/
for f in scanf*.pdf; do
    ((last++))
    output="$HOME/Desktop/$date $(printf %03d $last).pdf"
    python "$join" -o "$output" "$f" "${f/scanf/scanb}"
    osascript -e 'on run {f}
tell app "Finder" to set label index of (posix file f as alias) to 2
end' "$output"
done
    
respondido por el user495470 07.01.2013 - 17:41
1

La razón por la que te encuentras con errores inesperados de "archivo ya existe" es que la acción Hacer secuencial solo funciona para iteraciones individuales del flujo de trabajo. Si ejecuta el flujo de trabajo dos veces, fallará la segunda vez, porque el contador se reinicia e intenta iniciar la numeración en 1. Por lo tanto, si ya tiene un elemento llamado Scan 2013-01-07 01.pdf , intenta hacer otro con ese nombre y falla.

La solución es usar un script para hacer el cambio de nombre por usted, que puede detectar si ya hay archivos duplicados y comenzar de nuevo.

En lugar de la acción Hacer secuencial , agregue una acción Ejecutar script de shell , con el shell configurado en / usr / bin / python , la entrada a como argumentos , y pegarla en este script:

#!/usr/bin/python

import sys
import os

decimalPadding = 2 # pad to x decimal places
returnFiles = ''

for filePath in sys.argv[1:]:
    pathNoExt, extension = os.path.splitext(filePath)
    counter = 1
    newPath = pathNoExt + ' %0*d' % (decimalPadding, counter) + extension

    #     Increment counter until we find a file that does not exist
    while os.path.exists(newPath):
        counter += 1
        newPath = pathNoExt + ' %0*d' % (decimalPadding, counter) + extension
    os.rename(filePath, newPath)
    returnFiles += newPath + '\n'

print returnFiles #pass the renamed files for other automator actions

Eso debería darte los resultados que deseas.

    
respondido por el robmathers 07.01.2013 - 22:34

Lea otras preguntas en las etiquetas