情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

「2カラムの論文PDF」を「1カラムの余白にメモしやすいPDF」に変換する方法

論文 (6)

2カラム(2段組)の論文PDFを、1カラム(1段組)に変換して、余白にメモをとりやすいPDFを作成する方法を紹介します。この方法にたどり着くまで結構大変でした。

1カラムに変換して読みたい!

私は論文を読むときは、印刷して、余白に手書きでメモをとったり、手書きの図を書きながら読むのが好きです。

というのも、後からもう一度内容を確認したいときに、メモのおかげで前回自分が注目したところをすぐ見つけられたり同じことを2回悩まずに済んだりするからです(使う紙は増えますが、最後はドキュメントスキャナでデータ化して、元のPDFと一緒に保存しておけば保存スペースはとらない)

ただ、この作業には、PDFに十分な余白が必要です。しかし、私の読む多くの論文は2カラムで、余白がほとんどありません

そこで今回は、余白の少ない2カラムの論文を、余白の広くとれる1カラムに変換する方法を紹介します。

変換サンプル

今回紹介する方法で変換すると、こんな感じになります(題材は、IEEEの論文サンプルPDFです)

左が元のPDF(2 columns)、右が変換後のPDF(1 column)です。

↑サンプルとして、余白にダミーのメモを書いてみました。

↑変換の全体像はこんな感じです。図も再配置されているのがわかります。

今回選択したツール:「K2pdfopt」

今回利用したソフトウェアはK2pdfoptで、Windows/Mac OSX/Linuxで利用できるソフトウェアです(※Win/Mac用のGUIもありますが、いろいろなオプションで試すには不便そうだったので、今回は本家のCUI版を使っています)

K2pdfoptは、マルチカラムのPDFを、Kindleなどの電子書籍リーダーやスマートフォンで快適に読むために変換するツールなので、「初期設定のままでは」、出力先デバイスの解像度に合わせてPDFを画像化してしまいます。文字も巨大です。

しかし、ここからいろいろと設定を変更することで、なんとか「画像化なし」「文字サイズは小さいまま」を実現しました。これから紹介する設定が大切です。

基本的な使い方は・・・

基本的な使い方は、まずダウンロードしたk2pdfopt.exeに、変換したいPDFをドラッグアンドドロップして、オプション(-nなど)を入力して、最後にもう一度Enterを押すだけです。すると、自動的に変換結果が、元のPDFのあるフォルダに、「○○_k2opt.pdf」という名前で保存されます。

でも、コマンドラインがオススメ

ただ、CUIツールからの設定がちょっとめんどうなので、コマンドラインから使うことをオススメします。たとえば「-mode 2col」というオプションを設定する場合は、

>k2pdfopt -mode 2col paper.pdf

とすれば、OKです。

最重要:おすすめオプション

今回の2カラムの論文を1カラムにして読みやすくする、という特殊な目的なので、オプションの変更が必須です。そんな目的用のおすすめのオプションはこちらです。これで、余白の大きなシングルカラムPDFが出力されます。

-n -w 1.0s -h 1.0s -om 1.5,0.25,1.5,0.25 -c -wrap- -fc- -col 2

まだ改善の余地はありますが、これでとりあえずそこそこの変換ができるはずです。

※注意:保存先ファイルパスに日本語が含まれると出力できません。リネーム・移動して変換してください。また、-nと同時に使えないオプションを付けてしまったり、同時に使わないといけないオプションを付けないと 、ラスタライズされてしまいます(=画像になってしまう)。

実行方法

コマンドラインさえ分かってしまえば、あとはショートカットかバッチファイルを作ってしまえばOKです。今回はバッチファイルのほうを紹介します。

cd /D %~dp0
k2pdfopt -n -w 1.0s -h 1.0s -om 1.5,0.25,1.5,0.25 -c -wrap- -fc- -col 2 -sm %1

こんなファイルを「k2pdfopt-paper.bat」などといった名前(.bat)で保存して、目的のpdfファイルをドラッグアンドドロップすれば、2カラムPDFから、余白の広い1カラムPDFが出力されます。

おすすめオプション その2

もうちょっと攻めてきれいなのを作りたい場合は

-n -w 1.0s -h 1.0s -m 0.0,1.0,0.0,1.0 -om 1.5,0.25,1.5,0.25 -c -wrap- -fc- -col 2

こんな感じです(ヘッダ・フッタ除去←後半参考資料にて解説)。

各オプションについて

今回使った各オプションの意味や、今回使っていないオプションの使いどころ・コツについては、末尾の「k2pdfoptメモ」に書き出しておきました。適宜調節してみてください。おすすめから適宜変更すれば、よりよい結果が出力できるはずです

参考資料:k2pdfoptメモ

ここでは、オプションの説明・注意点・エラー回避法などを解説します。今回使用したのはK2pdfopt v1.64a 2013/1/5版です。困難多かった。

マージンパラメータの順番

コマンドラインパラメータの解説では、マージン系オプションのパラメータは bottom, left, right, top (=下から時計回り)の順となっていましたが、実際にやってみると left, top, right, bottom (=左から時計回り)でした。

というわけで、例えば出力ファイルの上下に3inch、左右に2inchの余白を設けたい場合は、「-om 2.0,3.0,2.0,3.0」にします。

エラー・処理の遅さ・保存失敗対策

「-n」オプションや「-mode 2col」オプションなどによる、native PDF(画像化・ラスタライズしないPDF)のまま保存する設定の場合、pdfファイルまでのパスに日本語(ASCII以外)が含まれると、保存ファイルが0.0MBになるなど、書き込みに失敗するようです(pdfのファイル名も日本語を含んではダメ)。

「** ERROR reading from ... using MuPDF. Trying Ghostscript...」や「error: cannot open ... .PDF」「error cannot load document ... .PDF」「wmupdf_remake_pdf: Error writing output PDF file ... .pdf」などのエラーや、k2pdfoptの実行が遅いのも、この日本語を含むファイルパスが原因のようです。

カラー出力する

デフォルトでは白黒出力なので、「-c」オプションでカラー出力に変更しておきます(もしかしたら-nがあれば必要ないかも)。

文字の自動拡大を防止する

2カラムを1カラムにするので、1行の幅(1行に入る文字数)がおよそ2倍になって欲しいのですが、これを増やすことはできなさそうでした。ただ、このままだと2カラムのときの1行を、2カラム分の横幅まで拡大してしまうので、文字が大きくなりすぎたりします

そこで、拡大(fit column)しないように「-fc-」というオプションを付けると、この拡大を抑制できます

GhostScriptを使う

「ERROR reading from ... using MuPDF. Trying Ghostscript...」が毎回表示されしまう場合は、「-gs」オプションを使って、始めからGhostScriptを使うように変更します(日本語ファイルパス対策で回避したので結果不要でした)。

pdfファイルによって「k2pdfopt.exeは動作を停止しました」となる場合の対策

応答が無くなってしまう場合は、PDFを一度Acrobatなりで変換(印刷)して、PDFを作り直すと上手く行くことがあります

出力PDFのサイズを設定する

入力がA4(8.5inch x 11.0inch)で、出力も同じサイズにしたいので、「-w 8.5 -h 11.0」で直接指定するか、「-w 1.0s -h 1.0s」で等倍指定するかすればOKです。

余分なヘッダ・フッタ・ページ番号を除去する(控えめがオススメ)

通常は、表示されている文字や図すべてを出力しますが、ページの区切りなどが変わるため、ページ毎に挿入されている雑誌名・会議名・ページ番号などが、邪魔になることがあります。

見た目がかっこわるいだけで、そこまで致命傷にはならないのですが(←重要)、これを除去するためには、「-m」オプションで、切り出す原稿の周囲からどれだけを無視するかを設定します。たとえば、「-m 0.0,1.0,0.0,1.0」と設定すると、上下端から 1 inch 以内にある文字や図を出力しない(読み込まない)ようになります(参考:Ignoring Borders/Headers/Footers)。

この設定で余白を切り取りすぎると、内容まで削除してしまったり、文字が切れてしまったりするので、注意が必要です。何も設定しないのが正直オススメです。

この分割結果も「-sm」オプションを付けることで「_marked.pdf」という形式でデバッグ出力できるので、参考にしてみてください。

領域分割の設定(何もしないほうがオススメ)

K2pdfoptは、カラムを検出分割した後、行をグループにわけます。簡単に言えば、節や画像の区切りで切る作業をします。この分割された部分を領域(region)と読んでいるのですが、この領域ごとにページに配置するため、領域が大きくなるpdfを変換すると、早すぎるページ送りが発生し、ページ下部の余白が大きくなります。

これ自体そこまで問題ではないのですが、これを回避するには、領域分割をより頻繁に行うように設定する方法があります。具体的には、どれくらい行と行が離れていたら領域分割するかという閾値を「-vb」オプションで設定してあげます。デフォルトは「-vb 1.75」で、「行の高さの1.75倍開いたら分割する」という意味なので、これを例えば「-vb 0.5」

ただし、これで行単位の分解までしてしまうと、再配置する際の領域間(行間)が開きすぎて、それはそれで微妙です。しかし、このように分割しないと、任意の行での改ページが行われないので、困ってしまいます。

この再配置時のスペースの広さは、「-vls」オプションで設定可能です。「-vs」オプションもチェックしてみてください。

この分割結果も「-sm」オプションを付けることで「_marked.pdf」という形式でデバッグ出力できるので、参考にしてみてください。

他の変換ソフト(paperCrop)

1カラムへの変換をnative PDF(ラスタライズ無しで)できる変換ツールで、k2pdfoptの次に良かったのがpaperCropでした。しかし、設定項目が少なく、目的に合わせた変換はできませんでした。

参考

コメント(0)

新しいコメントを投稿




  • カテゴリ ナビ
  • 著者紹介

    ブログが趣味で、 月間1,000万PV を達成しました。

    自分が困ったことをブログに書けば、次に困る人の参考になって、みんながみんな同じ苦労をせずに済む、というのが原点です。

    最近の関心は、スマホやパソコンに詳しくない人の行動や思考、 そしてそんな人を手助けする方法や枠組み。 また、それに関連するような、"身近な"セキュリティ。

    ※SNS(特にTwitter)でシェアされた記事は、内容の追加・更新を行っています。 必ず、ではありませんが、気に入った記事は積極的にシェアしてみてください。

    RSS | Facebook | Twitter | About