Что нового

[Автоматизация] Обработка PDF через командную строку

Kyser

Новичок
Сообщения
1
Репутация
0
Версия AutoIt: 3.

Описание: Просьба помочь с автоматизацией работы с PDF.
1. скрипт запускается через командную строку: scriptname.exe -file
где file полное имя файла, например c:/pdffolder/1.pdf
2. В системе файл ассоциирован с adobe acrobat reader, поэтому достаточно просто запустить.
3. В открытой программе выполнить команду File->Save as->Text... нажать кнопку "Сохранить".
Если пункт меню File->Save as->Text... не доступен, то выполнить пункт 5.
4. Закрыть Acrobat Reader после выполнения задачи. Завершить скрипт.
5. Создать файл txt с тем же именем, что и pdf с содержанием "secured". В нашем примере файл будет называться c:/pdffolder/1.txt. После закрыть Acrobat reader и завершить скрипт

Примечания:

Просьба помочь разобраться, как написать такой скрипт, так как мои знания AutoIt примерно равны 0 (только вчера узнал что это такое). Уверен, что задача не сложная, но если не прав, готов оплатить услуги.



Добавлено:
Сообщение автоматически объединено:

Поскольку никаких вариантов не предложено, начал разбираться сам. Пока пришел к такому скрипту:

Код:
$AReader = "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe";
$ATitle = "Adobe Reader";
$FOpenTitle = "Открыть";
$FSaveTitle = "Сохранить";

Opt("SendKeyDelay", 20);

If $CmdLine[0] = 0 Then
   $FileName = "C:\PDFFiles\1.pdf"; #отладка
Else 
   $FileName = $CmdLine[1]; #командная строка
EndIf

RUN($AReader);
$ReaderWnd = WinWait($ATitle, "", 10);
If Not $ReaderWnd Then
    Exit
EndIf
ControlSend($ReaderWnd, "", "", "{Alt}F");
Sleep(100);
ControlSend($ReaderWnd, "", "", "{Enter}");
$OpenDialogWnd = WinWait($FOpenTitle, "", 3);
Sleep(500); #иначе начало строки путается
ControlSend($OpenDialogWnd, "", "Edit1", $FileName);
ControlSend($OpenDialogWnd, "", "", "{Enter}");
Sleep(2000); #чтобы было
ControlSend($ReaderWnd, "", "", "{Alt}FAx");#File
$SaveDialogWnd = WinWait($FSaveTitle, "", 3);
If Not $SaveDialogWnd Then
    #сохраняем secured
	$TxtFileName = StringLeft($FileName, StringLen($FileName) - 4) & ".txt"
	$TxtFile = FileOpen($TxtFileName, 2)
	FileWrite($TxtFile, "secured")
	FileClose($TxtFile);
    WinKill($ReaderWnd)
    Exit
EndIf
ControlSend($SaveDialogWnd, "", "", "{Enter}");#File

#ждем, пока не будет сохранен файл 
#WinKill($ReaderWnd)


Остается не решенным момент, каким образом определить, что процесс сохранения завершен и приложение можно закрывать. Визуально, пока идет процесс сохранения Adobe Reader не реагирует ни на что и висит курсор "часы", в нижней части окна бежит прогресс бар. Что из этого можно использовать и каким образом?

<hr/>
Разобрался. Всем спасибо...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.
 
Верх