Automator: estrae il testo PDF e salva nella directory corrente

1

Ho creato un servizio Automator per estrarre il testo PDF e salvarlo nella directory corrente, e funziona abbastanza bene.

Prende uno o più file PDF, estrae il testo e lo salva come .rtfs separato inserito nella stessa directory di dove sono stati trovati i PDF originali.
Bene, eccellente, tranne che per un piccolo stropicciamento: ciò che è invariabilmente anche salvato insieme all'altro. Rtfs è uno vuoto (zero byte), con il nome della directory corrente.

Guardando il flusso di lavoro sottostante, sembra che entrambe le variabili ("PDF" e "Bane") siano passate all'azione "Hent ut PDF-tekst". La mia ipotesi è ragionevole e, in ogni caso, come risolverlo?

Loscriptintestosemplice:

onrun{input,parameters}tellapplication"System Events"
 set thePath to POSIX path of (container of (item 1 of input))
 end tell
 return thePath
end run

Per inciso, Automator crea automaticamente una rappresentazione PNG del tuo flusso di lavoro quando lo salvi, e può essere facilmente ottenuto rivelando il contenuto del pacchetto.
Genius me me ne sono reso conto solo dopo un po 'di tentativi di cattura dello schermo e GIMP.

    
posta AkselA 14.01.2016 - 19:16
fonte

1 risposta

1

Ecco il problema che ho riscontrato con la traduzione di "Hent ut PDF-tekst" in Google Translate durante la traduzione dal norvegese all'inglese, tradotto come "Ottieni il testo PDF", quindi quando ho digitato "Ottieni" nelle azioni Casella di ricerca non mostrava azioni PDF con le azioni "Ottieni" mostrate. Dopo un ulteriore esame ho trovato Estrai testo PDF e l'ho usato.

Sono stato in grado di replicare il problema di un file RTF di dimensioni zero creato insieme a quello per il file PDF effettivo, ma non sono riuscito a eseguire il debug sul perché e ho provato molte cose diverse. Attraverso il flusso di lavoro ha mostrato Bane come una cartella che è il percorso del file PDF selezionato, ma poi lo ha convertito nell'RTF a dimensione zero insieme al file RTF corretto e per me sembra un bug in Automator.

Detto questo, presento una soluzione alternativa che puoi scegliere di utilizzare se nessun altro ha una risposta che risolva il problema senza ricorrere a questa soluzione alternativa.

Aggiungi un'azione Esegui script shell alla fine dell'elenco di azioni, impostando Shell: / bin / bash e Passa l'input: come argomento con il seguente codice :

for f in "$@"; do
    if [ ! -s "$f" ]; then
        rm "$f"
    fi
done

Che si traduce in: Se questo file non ha una dimensione maggiore di zero, allora cancellalo.

BTW Se vuoi testare il codice per primo, puoi sostituire temporaneamente rm "$f" con qualcosa come say deleting "$f" in modo da poter sentire quale file sta per eliminare. Quando è soddisfatto cancellerà il file di dimensioni zero, quindi lo rimetterà a rm "$f" .

Ecco un'immagine del mio servizio di Automator.

    
risposta data 15.01.2016 - 01:08
fonte

Leggi altre domande sui tag