有什么方法可以在Chrome中打开pdf,全选,复制以及粘贴/写入文件?

时间:2019-01-20 21:30:17

标签: python macos pdf osascript

我正在寻找一种方法来打开chrome中的pdf,全选并复制内容以写入文本文件。我知道这是一种非常骇人听闻的方法,但是我已经尝试使用pdftotexttextract库来读取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)

这看起来很有效,在chrome中打开pdf,然后显示所有选定的文本,但未复制该文本。我无法通过复制命令或新的chrome窗口打开时确定焦点在窗口上,而不是窗口内的pdf文件。

1 个答案:

答案 0 :(得分:0)

找到了一种方法:

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')