स्वचालित के साथ pdfs विलय


0

मैं अपने मेल को स्कैन कर रहा हूं और दो संस्करणों के साथ समाप्त हो रहा हूं: आगे और पीछे।

फाइलों का नाम है: स्कैनफ 01. पीएफडी और स्कैनब 01.pdf

मैं एक दिन में लगभग 40 पृष्ठ स्कैन कर रहा हूं, इसलिए यह कुछ सूचियों तक समाप्त होता है।

अब, स्वचालक के साथ, मैंने निम्नलिखित कार्य किया है:

  1. चयनित खोजक आइटम प्राप्त करें # "scanf 01.pdf" और "scanb 01.pdf"
  2. पीडीएफ पृष्ठों को मिलाएं
  3. खोजक आइटम # डेस्कटॉप पर ले जाएं
  4. नाम एकल आइटम # ताकि इसका यादृच्छिक नाम न हो, लेकिन "Scan.pdf"
  5. दिनांक या समय जोड़ें # "स्कैन 2013-01-07.pdf"
  6. अनुक्रमिक # "स्कैन करें 2013-01-07 01.pdf" (कम से कम विचार है)
  7. लेबल खोजक आइटम # एक लाल लेबल जोड़ता है, इसलिए मैंने इसे अभी तक नहीं देखा

चरण 6 काम नहीं कर रहा है, क्योंकि हर बार जब मैं दो नई फ़ाइलों का चयन करता हूं तो अनुक्रम शुरू होता है। तो यह कहता है 'नाम पहले से मौजूद है', इसके बाद यह बंद हो जाता है।

प्रशन:

  1. मैं चरण 6 कैसे बना सकता हूं?
  2. क्या कोई ऐसी चीज़ है जो स्वचालित रूप से फ़ाइलों को मर्ज करती है, ताकि Scanf 01.pdf Scanb 01.pdf के साथ विलय हो जाए और वह Scanf 02.pdf Scanb 02.pdf के साथ विलय हो जाए, और इसी तरह। जैसा कि मेरे वर्तमान ऑटोमेटर सेटअप से मुझे दो फ़ाइलों का चयन करने की आवश्यकता है।

जवाबों:


1

मैंने वास्तव में इसका परीक्षण नहीं किया था, लेकिन आप इसके बजाय शेल स्क्रिप्ट का उपयोग कर सकते थे।

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

आप जिस अप्रत्याशित "फ़ाइल में पहले से मौजूद हैं" त्रुटियों का कारण है वह यह है कि अनुक्रमिक क्रिया केवल वर्कफ़्लो के एकल पुनरावृत्तियों के लिए काम करती है। यदि आप दो बार वर्कफ़्लो चलाते हैं, तो यह दूसरी बार विफल हो जाएगा, क्योंकि काउंटर रीसेट करता है और यह 1 पर नंबरिंग शुरू करने की कोशिश करता है। इसलिए यदि आपके पास पहले से ही कोई नाम है Scan 2013-01-07 01.pdf, तो वह दूसरा नाम बनाने की कोशिश करता है और विफल हो जाता है।

वर्कअराउंड का उपयोग आपके लिए नाम बदलने के लिए एक स्क्रिप्ट का उपयोग करना है, जो यह पता लगा सकता है कि क्या पहले से ही डुप्लिकेट फाइलें हैं और शुरू हो गई हैं।

के स्थान में मेक अनुक्रमिक कार्रवाई, एक जोड़ने भागो शैल स्क्रिप्ट खोल करने के लिए सेट के साथ, कार्रवाई / usr / bin / अजगर , के लिए इनपुट तर्क के रूप में , और इस स्क्रिप्ट में पेस्ट करें:

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

आपको वह परिणाम प्राप्त करने चाहिए जो आप चाहते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.