Но появилась новая проблема. Иногда скрипт во время работы внезапно запрещает выделять действия. Т.е при клике на любое действие, оно просто не выделяется красным. Это второй баг, независимый от первого если что
модуль "Запустить процесс" исполяет только первую итерацию...
-
Здравствуйте есть такой вопрос...
Пытаюсь приручить GhostScript с помощью командной строки. Цель: скриншотить все страницы PDF в PNG для дальнейшего распознавания текста в переменную с помощью Tesseract OCR.
На тесте, 5-ти страничный PDF.В командной строке windows 10 команда:
gswinc.exe "-sOutputFile=C:\Users\user\Desktop\pdfbase\pdf_base_tem_images\page%03d.png" -dNOPAUSE -dALLOWPSTRANSPARENCY "-sFONTPATH=C:\WINDOWS\Fonts" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sDEVICE=png16m "C:\Users\user\Desktop\pdfbase\80400603245680_20241106.pdf"... отрабатывает прекрасно... в желаемой мной папке создается 5 png изображений со страниц PDF. Но как только я добавляю эту команду в модуль "запустить процесс" и запускаю, то в переменную STANDART_OUTPUT куда пишется результат выполнения скрипта, записывается только первая итерация скрипта, а в папке для изображений создаётся только первый скриншот из N-страниц PDF, причем по названию понятно что скриншот создан как временный файл, а не в соответствии с той нумерацией которую я задал в команде.
Вот скришот модуля:

А в STANDART_OUTPUTe та самая первая итерация выводится как первое вступительное сообщение от GS, после него должны были появится еще сообщения о статусе обработки страниц, но их нет. Отсюда сделал вывод, что модуль "Запустить процесс" сделал лишь первую итерацию и вышел из процесса, но как заставить его работать до окончания работы команды в системе?
-
@yooriko said in модуль "Запустить процесс" исполяет только первую итерацию...:
Здравствуйте есть такой вопрос...
Пытаюсь приручить GhostScript с помощью командной строки. Цель: скриншотить все страницы PDF в PNG для дальнейшего распознавания текста в переменную с помощью Tesseract OCR.
На тесте, 5-ти страничный PDF.В командной строке windows 10 команда:
gswinc.exe "-sOutputFile=C:\Users\user\Desktop\pdfbase\pdf_base_tem_images\page%03d.png" -dNOPAUSE -dALLOWPSTRANSPARENCY "-sFONTPATH=C:\WINDOWS\Fonts" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sDEVICE=png16m "C:\Users\user\Desktop\pdfbase\80400603245680_20241106.pdf"... отрабатывает прекрасно... в желаемой мной папке создается 5 png изображений со страниц PDF. Но как только я добавляю эту команду в модуль "запустить процесс" и запускаю, то в переменную STANDART_OUTPUT куда пишется результат выполнения скрипта, записывается только первая итерация скрипта, а в папке для изображений создаётся только первый скриншот из N-страниц PDF, причем по названию понятно что скриншот создан как временный файл, а не в соответствии с той нумерацией которую я задал в команде.
Вот скришот модуля:
А в STANDART_OUTPUTe та самая первая итерация выводится как первое вступительное сообщение от GS, после него должны были появится еще сообщения о статусе обработки страниц, но их нет. Отсюда сделал вывод, что модуль "Запустить процесс" сделал лишь первую итерацию и вышел из процесса, но как заставить его работать до окончания работы команды в системе?
BAS создаёт батник из вашего кода и запускает его, а код для выполнения в файле немного отличается от кода выполняемого в командной строке. Чтобы использовать символ процента в файле его надо написать дважды. Попробуйте так:
gswinc.exe "-sOutputFile=C:\Users\user\Desktop\pdfbase\pdf_base_tem_images\page%%03d.png" -dNOPAUSE -dALLOWPSTRANSPARENCY "-sFONTPATH=C:\WINDOWS\Fonts" -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sDEVICE=png16m "C:\Users\user\Desktop\pdfbase\80400603245680_20241106.pdf" -
Остался только 1 вопрос, каким инструментом я могу убрать из переменной OUTPUT статус
C:\Users\user\AppData\Roaming\BrowserAutomationStudio\apps\28.1.1>chcp 65001
Active code page: 65001C:\Users\user\AppData\Roaming\BrowserAutomationStudio\apps\28.1.1>cd C:\Program Files\PDF24\tesseract
-
@yooriko said in модуль "Запустить процесс" исполяет только первую итерацию...:
Остался только 1 вопрос, каким инструментом я могу убрать из переменной OUTPUT статус
C:\Users\user\AppData\Roaming\BrowserAutomationStudio\apps\28.1.1>chcp 65001
Active code page: 65001C:\Users\user\AppData\Roaming\BrowserAutomationStudio\apps\28.1.1>cd C:\Program Files\PDF24\tesseract
Код
chcp 65001добавляется автоматически, что бы его убрать, нужно изменить код модуля. Но ещё вы можете с помощью файлового модуля создать батник с нужным кодом и запускать его через "Запустить процесс"