Unione di pdf con l'automazione

0

Sto scannerizzando la mia posta e finisco con due versioni: front & indietro.

I file sono denominati: scanf 01.pdf & scanb 01.pdf

Sto effettuando la scansione di circa 40 pagine al giorno, quindi ci sono un po 'di liste.

Ora, con il programma di automazione, ho fatto quanto segue:

  1. Trova elementi del Finder selezionato # "scanf 01.pdf" & "scanb 01.pdf"
  2. Combina pagine PDF
  3. Sposta gli elementi del Finder sul desktop
  4. Assegna il singolo elemento # in modo che non sia un nome casuale, ma "Scan.pdf"
  5. Aggiungi data o ora # "Scansiona 2013-01-07.pdf"
  6. Crea # sequenziale "Scansiona 2013-01-07 01.pdf" (è almeno l'idea)
  7. Elementi del Finder dell'etichetta # Aggiunge un'etichetta rossa, quindi non l'ho ancora vista

Il passaggio 6 non funziona, poiché la sequenza ricomincia ogni volta che seleziono due nuovi file. Quindi dice "il nome esiste già", dopo si ferma.

Domande:

  1. Come posso eseguire il passaggio 6?
  2. C'è qualcosa che unisce automaticamente i file, in modo che Scanf 01.pdf sia unito a Scanb 01.pdf e che Scanf 02.pdf sia unito a Scanb 02.pdf e così via. Poiché la configurazione corrente del mio automator richiede che selezioni i due file.
posta Maurice Kroon 07.01.2013 - 16:47
fonte

2 risposte

1

Non l'ho provato, ma potresti usare uno script di shell.

#!/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
    
risposta data 07.01.2013 - 17:41
fonte
1

Il motivo per cui stai incontrando errori "file già esistenti" è che l'azione Crea sequenziale funziona solo per singole iterazioni del flusso di lavoro. Se si esegue il flusso di lavoro due volte, fallirà la seconda volta, perché il contatore si azzera e tenta di avviare la numerazione a 1. Quindi, se si dispone già di un oggetto denominato Scan 2013-01-07 01.pdf , si tenta di farne un altro chiamato e fallisce.

La soluzione alternativa è quella di utilizzare uno script per eseguire la ridenominazione, che può rilevare se ci sono già file duplicati e ricominciare da capo.

Al posto dell'azione Crea sequenziale , aggiungi un'azione Esegui script shell , con la shell impostata su / usr / bin / python , l'input per come argomenti e incollare in questo 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

Questo dovrebbe darti i risultati che desideri.

    
risposta data 07.01.2013 - 22:34
fonte

Leggi altre domande sui tag