Pdfs ile automator birleştirme


0

Postalarımı tarıyorum ve iki sürümle bitiyorum: front & amp; geri.

Dosyalar adlandırılır: scanf 01.pdf & amp; scanb 01.pdf

Günde yaklaşık 40 sayfa tarıyorum, bu yüzden bazı listeler listeleniyor.

Şimdi, automator ile, aşağıdakileri yaptım:

  1. Seçili Bulucu Öğeleri Alın # "scanf 01.pdf" & amp; "scanb 01.pdf"
  2. PDF Sayfalarını Birleştir
  3. Finder Öğelerini # Masaüstüne Taşı
  4. Adı Tek Öğe #, rastgele bir ad değil, "Scan.pdf"
  5. Tarih veya Saat Ekleme # "Tara 2013-01-07.pdf"
  6. Sıralı Yap # "Tara 2013-01-07 01.pdf" (en azından fikir)
  7. Etiket Bulucu Öğeleri # Kırmızı bir etiket ekler, bu yüzden henüz görmedim

İki yeni dosyayı her seçtiğimde sekans başladığı için 6. Adım çalışmıyor. Yani 'isim zaten var' diyor, bundan sonra duruyor.

Sorular:

  1. 6. adımı nasıl çalıştırabilirim?
  2. Dosyaları otomatik olarak birleştiren bir şey var mı, böylece Scanf 01.pdf, Scanb 01.pdf ile birleştirildi ve Scanf 02.pdf, Scanb 02.pdf ile birleştirildi, vb. Mevcut automator kurulumum iki dosyayı seçmemi gerektiriyor.

Yanıtlar:


1

Bunu gerçekten test etmedim, ancak bunun yerine bir kabuk betiği kullanabilirsiniz.

#!/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

Beklenmeyen "dosya zaten var" hatalarının nedeni şudur: Sıralı Yap eylem, yalnızca iş akışının tek yinelemelerinde çalışır. İş akışını iki kez çalıştırırsanız, sayaç sıfırlandığından ve numaralandırmayı 1'den başlatmaya çalıştığından ikinci kez başarısız olur. Öyleyse, adında bir öğeniz varsa Scan 2013-01-07 01.pdf, başka bir adlandırılmış yapmaya çalışır ve başarısız olur.

Çözüm, sizin için yeniden adlandırma yapmak üzere bir komut dosyası kullanmaktır; bu, yinelenen dosyalar olup olmadığını algılayabilir ve baştan başlayabilir.

Yerine Sıralı Yap işlem eklemek Kabuk Betiğini Çalıştır eylem, kabuğa ayarlanmış olarak / Usr / bin / python , giriş argümanlar olarak ve bu komut dosyasında yapıştırın:

#!/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

Bu size arzu ettiğiniz sonuçları vermelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.