我正在寻找一种方法来打开chrome中的pdf,全选并复制内容以写入文本文件。我知道这是一种非常骇人听闻的方法,但是我已经尝试使用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)
这看起来很有效,在chrome中打开pdf,然后显示所有选定的文本,但未复制该文本。我无法通过复制命令或新的chrome窗口打开时确定焦点在窗口上,而不是窗口内的pdf文件。
答案 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')