2016-02-22 3 views
0

заранее за вашу помощь.Applescript: пакетное сохранение файлов в окне предварительного просмотра без сохранения

Новое в Applescript. Попытка открыть в Preview все файлы в папке и сохранить их. Проблема заключается в том, что сохранение всплывает диалоговое окно в два раза, что требует от меня сидеть там, чтобы попасть.

Код:

tell application "Finder" 
    set fl to files of folder POSIX file "/Users/myname/Desktop/myfolder/" as alias list 
end tell 

repeat with f in fl 
    tell application "Preview" 
     activate 
     open f 

     # Trying to save before the window has appeared will fail. 
     # Note: - This assumes that NO window was initially open. 
     # - The code should be made more robust to eventually time out. 

     repeat until (count of windows) > 0 
      delay 0.3 
     end repeat 
     save front document 
     close front document 
    end tell 
end repeat 

Спасибо за помощь

+0

Глядя на ваш сценарий, кажется, вы просто открываете и сохраняете свои файлы. не быстрее ли просто перемещать или дублировать файлы в нужную папку? или вы хотите изменить формат файла (по умолчанию image = jpg)? – pbell

+0

Файлы представляют собой формы PDF. Я пытаюсь собрать данные ответа из форм, но в какой-то момент некоторые из версий pdfs изменились, и я получаю сообщение об ошибке при попытке добавить многие файлы в форму ответа. По-видимому, эта проблема возникла, и решение заключалось в том, чтобы сохранить файлы в предварительном просмотре, поскольку он автоматически преобразует их в ту же версию pdf (что я раньше не знал). Это работало в малогабаритных тестах.Попытка сделать applescript, чтобы открыть и сохранить все файлы в предварительном просмотре, чтобы получить их для всех, будет одинаковой версией в формате pdf. –

+0

Я проверил ваш скрипт с несколькими файлами PDF (разная версия с 2007 по 2016 год, с веб-сайтов или дома). нет проблем. когда ваш скрипт останавливается, прося вас нажать клавишу ввода, это, вероятно, потому, что PDF-код является чем-то особенным. как только мы узнаем, что делает эту версию файла особенной, мы могли бы нажать enter в скрипте, но мы должны знать характеристику файла, чтобы позволить скрипту знать. можете ли вы видеть различия между файлом, который работает, и тем, который требует ввода? в информационном окне, это специальная версия? специальное кодирование? – pbell

ответ

0

Я сделал несколько PDF файлов и загрузить с различных сайтов, и я получаю выборку из версии 1.3, 1.4, 1.5, 1.7, ..но нет 1.6! Для них не проблема.

В любом случае, потому что я не смог воспроизвести то, что у вас есть, я принял другой подход.

1) Я добавил в начало скрипта список списков кодирования/версии, который может потребовать специальной обработки (например, клавиши возврата возврата). Вы можете, конечно, изменить эти 2 списка, чтобы управлять другими случаями, которые у вас могут быть.

2) Я изменил свой сценарий, чтобы сценарий мог получить кодировку и значения версии pdf. Это делается с помощью базы данных прожектора через командную команду «mdls». Я использую его 2 раза, чтобы получить характеристики версии и кодирования. Команда оболочки возвращает символы до и после значения, которое мы хотим получить, поэтому я использую текст x через Y для извлечения кодировки и самой версии.

3) если PDF-версия/кодировка указаны в предопределенном списке, который требует специальной обработки, то я установил OKReturn в true.

4) Сразу после инструкции сохранения скрипт теперь проверяет, является ли значение OKReturn истинным. то я попрошу сценарий нажать клавишу возврата для вас. вам, возможно, придется отрегулировать эту часть, например, это может быть не только 1 возврат, но 2 или что-то еще. это то, что я не смог проверить, потому что все мои pdf работают. имейте в виду, что, поскольку я имитирую ключ возврата, вы не должны использовать клавиатуру во время запуска скрипта.

Основываясь на моем тесте, я не думаю, что кодировка является критерием блокировки. Я думаю, что версия 1.6 есть. Вот сценарий. Она включает в себя комментарий, чтобы вы смогли настроить его:

набор CodingReturn к { "Mac OS X 10.7.3 Quartz PDFContext"} набор VersionReturn до { "1,6"}

set myFolder to choose folder 
tell application "Finder" 
set fl to files of myFolder as alias list 
end tell 

repeat with f in fl 
set FVersion to do shell script "mdls -name kMDItemVersion " & quoted form of POSIX path of f 
set FEncoding to do shell script "mdls -name kMDItemEncodingApplications " & quoted form of POSIX path of f 
if (length of FVersion) > 21 then set FVersion to text 19 thru -2 of FVersion -- extract only version number 
if (length of FEncoding) > 42 then set FEncoding to text 38 thru -4 of FEncoding -- extract only the coding 

set OKReturn to ((FVersion is in VersionReturn) and (FEncoding is in CodingReturn)) -- special treatment true/false 

tell application "Preview" 
    activate 
    open f 

    repeat until (count of windows) > 0 
     delay 0.3 
    end repeat 
    save front document 

    if OKReturn then -- we need special key to be pressed 
     tell application "System Events" to keystroke return 
    end if 

    close front document 
end tell 
end repeat 

Я был бы очень заинтересованы, чтобы получить ваши отзывы об этой версии.

+0

Я думаю, что проблема с вышеупомянутым решением заключается в том, что без пути для сохранения в Preview открывается диалоговое окно «Сохранить как», и команда сохранения не будет завершена, пока вы не вручную нажмете кнопку «Сохранить». Попытка заставить автомата нажать клавишу ввода не будет работать, потому что этот шаг не может работать до тех пор, пока не будет устранена операция «сохранить». –

0

Чтобы сохранить, не открыв диалоговое окно «Сохранить как», добавьте «в f». Здесь «f» было именем файла. Вы могли бы поместить другой путь.

save front document in f 
Смежные вопросы