Adobe Acrobat Reader DC は PDF ファイルの表示,印刷,注釈の追加が可能なソフトウェアです.
Windows 版の Adobe Acrobat Reader DC は PDF ファイルをロックしてしまうので,編集中の PDF ファイルのプレビューには向いていません.PDF ファイルのプレビューには SumatraPDF, Evince, Okular, TeXworks, TeXstudio などのビューワを用いて,Adobe Acrobat Reader DC を使用するのは最終確認や印刷時のみとするのがおすすめです.
Adobe Acrobat Reader DC には Continuous と Classic が存在します.PDFリーダー、PDFビューア | Adobe Acrobat Reader DC からダウンロードした場合は Continuous になります.
必要システム構成 | Adobe Acrobat Reader DC
Arch Linux/Manjaro Linux の場合は
sudo pacman -S wine winetricks
Linux Mint/Debian/Ubuntu の場合は
sudo apt install wine-development winetricks
Fedora の場合は
sudo dnf install wine winetricks
openSUSE の場合は
sudo zypper install wine
を実行します。
以下のコマンドを実行して Adobe Acrobat Reader DC をインストールします。
winetricks mspatcha wget ftp://ftp.adobe.com/pub/adobe/reader/win/AcrobatDC/2001320064/AcroRdrDC2001320064_ja_JP.exe wine AcroRdrDC2001320064_ja_JP.exe
Linux で Adobe Acrobat Reader DC を起動して file.pdf を表示するには
wine cmd /c start AcroRd32.exe file.pdf
のように実行して「常に保護モードを無効にして開く(A)」を選択して OK を押します。
初期設定では Adobe Acrobat Reader DC の使用方法に関する情報をアドビと共有します. この機能を OFF にしたい場合はレジストリの
コンピューター\HKEY_CURRENT_USER\SOFTWARE\Adobe\CommonFiles\Usage\Reader DC
に存在する
名前 OptIn, 種類 REG_DWORD
の値のデータを
0
に修正します.
「Windows Explorer で PDF サムネールのプレビューを有効にする」 を ON にすることでサムネールのプレビューができるようになります.
[編集(E)] > [環境設定(N)...] > [一般] > ☑Windows Explorer で PDF サムネールのプレビューを有効にする(B)
TeX Live(win32 版)と W32TeX には Adobe Acrobat Reader DC で DDE を使用して PDF ファイルを開いたり閉じたりするためのツールである pdfopen.exe, pdfclose.exe, pdfdde.exe が収録されています。これらは,Adobe による PDF Reader がファイルをロックするので,この状況を少しでも改善するために作成された ものです。つまり,
pdfopen --file foo.pdf
によって PDF ファイルをプレビューし,ソースを編集する前に
pdfclose --file foo.pdf
によって PDF ファイルをクローズするわけです。一番最初は,Reader 自身を間接的に立ち上げるので時間的に効率が悪いと思われますが,以降は Reader はメモリに留まったままなので,編集中に pdfopen, pdfclose を繰り返すのは, ある程度効率が良いと思われます。 pdfdde.exe の詳細については pdfdde.c を参照してください。
https://fossies.org/windows/misc/w32tex-src.tar.xz/ktx/utils/pdfopen/pdfdde.c
pdfdde.exe で使用できる機能に関してはコマンドラインから
echo list | pdfdde
を実行することで確認できます。 以下の機能が利用可能です。
Type Ctrl-Z to quit. open <file> open the file close <file> close the file closeall close all files goto <file> <page> goto the given <page> in <file> gotoname <file> <dest> goto the <dest> named destination in <file> show show acroview hide hide acroview exit exit acroview and pdfdde
Windows 版の Adobe Acrobat Reader DC バージョン 2020 に対して,pdfopen.exe, pdfclose.exe, pdfdde.exe を使うには,内容が
AcroViewR20
という1行だけを持ち,ファイル名が
pdfddeservername.txt
であるファイルを,pdfdde.exe が存在するディレクトリに置いて下さい.
AcroViewR20 という1行だけの内容を持つ pdfddeservername.txt が pdfdde.exe と同じディレクトリに存在しない場合は
Cannot contact a server.
というエラーが発生して PDF ファイルが開けません。
AcroViewR20 に設定して pdfopen foo.pdf を実行すると Cannot contact a server. エラーがでてファイルが開けない場合は
Windows PowerShell の場合は
start AcroRd32;if($?){timeout 1};if($?){pdfopen foo.pdf}
コマンド プロンプトの場合は
start AcroRd32 && timeout 1 && pdfopen foo.pdf
のようにして実行してください。
また Windows 10 で PDF ファイルが Microsoft Edge や SumatraPDF など Adobe Acrobat Reader DC 以外の PDF Viewer に関連付けされている場合はエラーが発生します。
Microsoft Edge に関連付けされている場合は
Cannot execute command "[DocOpen("%s")]" (error 16390)
SumatraPDF に関連付けされている場合は
Cannot contact a server.
というエラーが発生して PDF ファイルが開けないので pdfopen.exe, pdfclose.exe, pdfdde.exe を使う場合は PDF ファイルは Adobe Acrobat Reader DC に関連付けしておいてください。
pdfopen.exe で PDF ファイルを開くのに AcroRd32.exe で直接開く場合と比べて時間がかかったり PDF ファイルを SumatraPDF など Adobe Acrobat Reader DC 以外の PDF Viewer に関連付けしたい場合は pdfopen.exe, pdfclose.exe, pdfdde.exe を使用せずに AcroRd32.exe を直接使用してください。
MSYS2 の time コマンドで AcroRd32.exe で直接開く場合と pdfopen.exe を使用する場合で比較すると pdfopen.exe を使用した場合は AcroRd32.exe で直接開く場合に比べて 12 倍 ~ 19 倍ぐらい時間がかかるようです.
$ time C:/Windows/System32/cmd.exe /c 'start AcroRd32 foo.pdf' real 0m0.100s user 0m0.015s sys 0m0.000s $ time C:/Windows/System32/cmd.exe /c 'pdfopen --file foo.pdf' real 0m1.222s user 0m0.000s sys 0m0.015s
MSYS2 の time コマンドで「AcroRd32.exe で開く --> AcroRd32.exe を終了する --> AcroRd32.exe で開く」場合と「AcroRd32.exe で開く --> pdfopen.exe で開いて pdfclose.exe で閉じる --> AcroRd32.exe で開く」場合を比較すると AcroRd32.exe を終了して AcroRd32.exe で開くほうが pdfopen.exe と pdfclose.exe で閉じて AcroRd32.exe で開くよりも 2 倍早く動作するようです.
$ time C:/Windows/System32/cmd.exe /c 'start AcroRd32 foo.pdf && tasklist /fi "IMAGENAME eq AcroRd32.exe" /nh | findstr "AcroRd32.exe" >nul && taskkill /im AcroRd32.exe & echo start AcroRd32 foo.pdf | cmd' real 0m0.520s user 0m0.000s sys 0m0.015s $ time C:/Windows/System32/cmd.exe /c 'start AcroRd32 foo.pdf && pdfopen --file foo.pdf && pdfclose --file foo.pdf & echo start AcroRd32 foo.pdf | cmd' real 0m1.096s user 0m0.015s sys 0m0.000s
昔は Adobe Acrobat Reader の起動に時間がかかったため,Adobe Acrobat Reader を起動したままで DDE を使用して PDF ファイルを閉じる方法が有効に機能していましたが,現在は DDE サーバー名が Adobe Acrobat Reader のバージョンによって変化するようになり*1 DDE の使い勝手が悪くなってしまったことと Adobe Acrobat Reader の起動が早くなったため DDE でファイルを閉じなくても「AcroRd32.exe で開く --> AcroRd32.exe を終了する --> AcroRd32.exe で開く」といった処理でも十分に実用的な速度で動作するようです.*2
ちなみに LyX では PDF ファイルを Adobe Acrobat Reader DC で表示するために pdfview.exe というプログラムを使用していますが旧バージョンの pdfview.exe では pdfopen.exe と pdfclose.exe で PDF ファイルを閉じる方法で運用していました。
現在の LyX の pdfview.exe は pdfopen.exe, pdfclose.exe を使用して PDF ファイルを閉じる方法ではなく編集中の PDF ファイルが開かれている Adobe Acrobat Reader DC のウィンドウを閉じる方法で運用しているようです。*3
Windows PowerShell の場合は
Start-Process AcroRd32 'foo.pdf'
コマンド プロンプトの場合は
start AcroRd32 "foo.pdf"
pdfopen.exe を使う場合は
pdfopen --file foo.pdf
あるいは簡単に
pdfopen foo.pdf
起動時あるいはファイルを開くときに 3 ページ目を表示するには以下のようにします.
Windows PowerShell の場合は
Start-Process AcroRd32 -ArgumentList ('/A', 'page=3', 'foo.pdf')
コマンド プロンプトの場合は
start AcroRd32 /A "page=3" "foo.pdf"
pdfopen.exe を使う場合は
pdfopen --file foo.pdf --page 3
なお,指定したページを表示できるのは起動時あるいはファイルを開くときのみで,現在開かれているファイルに対して実行しても効果はなく指定したページで表示することはできないので注意してください。
pdfclose.exe を使用する場合は事前に pdfopen.exe でファイルを開いておく必要があります。
Windows PowerShell で pdfopen.exe と pdfclose.exe を使う場合は
pdfopen --file foo.pdf;if($?){pdfclose --file foo.pdf}
コマンド プロンプトで pdfopen.exe と pdfclose.exe を使う場合は
pdfopen --file foo.pdf && pdfclose --file foo.pdf
Windows PowerShell の場合は
Stop-Process -Name AcroRd32
コマンド プロンプトの場合は
taskkill /IM AcroRd32.exe
pdfdde.exe を使う場合は
echo exit | pdfdde
Adobe Acrobat Reader DC は SyncTeX には対応していませんが synctex コマンドを使用して forward and inverse search を行うことができます.
TeX ファイルの 30 行目に対応する PDF ファイルの該当するページにジャンプしたい場合は
synctex view -i "30:0:hoge.tex" -o "hoge.pdf" -x "rundll32 shell32,ShellExec_RunDLL AcroRd32 /A 'page=%{page+1}' '%{output}'"
のように実行します.
詳細については
synctex help view
を参照してください.
例えば TeXstudio で PDF ファイルの 30 ページ目の x 座標 0, y 座標 0 に対応する TeX ファイルの該当する行にジャンプしたい場合は
synctex edit -o "30:0:0:hoge.pdf" -x "texstudio -line %{line} '%{input}'"
のように実行します.
詳細については
synctex help edit
を参照してください.