Любой способ открыть PDF в Chrome, выбрать все, скопировать и вставить / записать в файл? - PullRequest
0 голосов
/ 21 января 2019

Я ищу способ открыть PDF-файл в Chrome, выбрать все и скопировать содержимое для записи в текстовый файл.Я понимаю, что это очень хакерский подход, но я уже пробовал библиотеки pdftotext и textract для чтения текста в формате PDF, и при ручном выполнении команды «Выделить все» и «Копировать / Вставить в Chrome» текст наиболее последовательно читался в моих нескольких файлах.

Это то, что у меня есть до сих пор:

import os
import subprocess

# open file in chrome
cmd = """osascript -e 'tell application "System Events" to keystroke "a" using {command down}'"""
p = subprocess.Popen(['open', '-na', 'Google Chrome', '--args', '--new-window', f'{pdf_f}'])
time.sleep(1)
# select all
os.system(cmd)
time.sleep(1)
# copy
cmd = """osascript -e 'tell application "System Events" to keystroke "c" using {command down}'"""
os.system(cmd)

Видимо, это работает, открывая pdf в chrome, затем показывая весь выделенный текст, но текст не копируется.Я не могу сказать, если это из команды копирования или когда открывается новое окно Chrome, фокус находится на окне, а не на файле PDF в этом окне.

1 Ответ

0 голосов
/ 21 января 2019

Нашел способ:

for fnm in fnms:
    pdf_f = path/'data'/'pdfs'/f'{fnm}'
    # open file in chrome
    p = subprocess.Popen(['open', '-na', 'Google Chrome', f'{pdf_f}'])
    time.sleep(1)
    # click
    pyautogui.moveTo(screen_width//2, screen_height//2)
    pyautogui.click()
    # select all
    pyautogui.hotkey('command', 'a')
    # copy
    pyautogui.hotkey('command', 'c')
    # write txt file
    clipboard_to_txt(path/'data'/'txts'/(fnm[:-3]+'txt'))
    # close tab
    pyautogui.hotkey('command', 'w')
...