0. はじめに
Qiita初投稿です。理系大学生です。
理系大学生は、論文を毎日のように読みます。研究分野によっては日本語の論文が乏しく、英語論文を読まないといけない場合も多いです。知らない単語や表現が出てくるたびにいちいち検索をするのは面倒で、英語論文を読む際の心のハードルが上がってしまうことがあります。
そこで、少しでも英語論文を読むことに対する負荷を減らせるような環境を作りましたので、シェアします。
1. Mouse Dictionary
まず、このような素晴らしいChrome拡張機能があります。Firefoxにも対応して頂いたようです。以前Qiitaでバズっていたので、ご存知の方も多いとは思います。
Chrome拡張の高速な英語辞書ツールをつくりました(Mouse Dictionary)
これ自体の説明は上記リンクを辿って頂きたいのですが、端的に言うと、
「ブラウザ上で英単語にカーソルを合わせるだけで、非常に高速に対訳を表示してくれる拡張機能」
です。
デフォルトの辞書データ(5万語ほど)であれば完全に無料で使えます。すごい。
上記リンクにもある通り、外部で公開されている辞書データを読み込ませることが可能で、英辞郎の有料辞書データ(500円ほど)を買えば200万語以上に対応します。
英文のサイトを閲覧する際にはこれで十分に足ります。一方でこれはPDFファイルに対応しておらず、ブラウザでPDFを開いても動作しません。
この件については上記リンクで解決策が示されていて、PDF.jsのデモページでPDFを開くとよいとのことです。
でもオフライン環境でもPDF見たいですよね…?(後付けの理由)
ということでここからはPDF.jsをオフラインで動作させる際について書きます。
2. PDF.js
まずはPDF.jsのダウンロードサイトからダウンロードします。
Stable版で十分だと思います。zip形式でダウンロードされるので解凍します。
解凍後のディレクトリ構成はこんな感じですが、このwebフォルダにPDFファイルを入れ、pdfjs-2.2.228-distでサーバーを立ち上げて
http://localhost:8080/web/viewer.html?file=hoge.pdf
をChromeで開けばよいです。hoge.pdfの部分は見たいPDFファイルの名前にしてください。
3. 本題
…という、PDFファイルをwebフォルダに入れてブラウザで開くまでの流れを自動でできるようにしました。
ローカルにあるPDFファイルをドラッグ&ドロップしたらブラウザで見れます。
サーバーを立てるのはPythonとその標準モジュールで行います。
まずpyファイルはドラッグ&ドロップに対応していませんので、バッチファイルを噛ませます。
pyファイル名はpdf.pyとしています。
@echo off
python "path to pdf.py" %*
pause
次にPythonスクリプト本体です。
import sys
import shutil
import http.server
import socketserver
import webbrowser
import os
from pathlib import Path
# parameter
pdfjs_path=Path(r"path to pdfjs-x-dist")
PORT = 8000
###########
pdf_path=Path(sys.argv[1])
url = "http://localhost:{}/web/viewer.html?file={}".format(PORT,pdf_path.name)
if pdf_path.suffix!=".pdf":
print("Please input pdf file.")
else:
shutil.copy(pdf_path,pdfjs_path/"web")
Handler = http.server.SimpleHTTPRequestHandler
os.chdir(pdfjs_path)
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
webbrowser.open(url)
httpd.serve_forever()
先ほどの手順をそのまま書き起こしただけです。
Chromeでないブラウザが開いてしまう場合には、
# before
webbrowser.open(url)
# after
webbrowser.get("C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s").open(url)
とするとよいと思います。
これで、batファイルのアイコンにPDFファイルをドラッグ&ドロップするだけで、オフラインでもPDF.jsを開いてMouse Dictionaryで快適に読めるようになります。
よき英語論文ライフを…!
参考
PDF.jsとMouse Dictionaryで最高を手に入れる
Python webbrowser.open() to open Chrome browser