Unione di pdf con l'automazione


0

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

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

Sto scannerizzando circa 40 pagine al giorno, quindi finisce con un po 'di liste.

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

  1. Ottieni elementi del Finder selezionato # "scanf 01.pdf" & amp; "scanb 01.pdf"
  2. Combina pagine PDF
  3. Sposta gli elementi del Finder sul desktop
  4. Denominare il singolo articolo # 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. Label Finder Items # 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 far funzionare 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 dell'automatore richiede di selezionare i due file.

Risposte:


1

Non ho provato questo, 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$/\1/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

1

Il motivo per cui stai incontrando errori "file già esistenti" è che il Crea sequenziale l'azione 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, prova a farne un altro chiamato e fallisce.

La soluzione alternativa consiste nell'utilizzare uno script per eseguire la ridenominazione, che può rilevare se sono già presenti file duplicati e ricominciare da capo.

Al posto del Crea sequenziale azione, aggiungi a Esegui Shell Script azione, con la shell impostata su / Usr / bin / python , l'input a 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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.