Ghostscript を使って PDF から特定のページを指定して書き出す

PDF ファイルから複数ページ選択し,保存するときの自分用メモ.

❖  はじめに

PDF ファイルから指定したページを保存する方法は色々あるが,PDF が保護されていており,ページの抽出ができないときがあった.
色々試した結果,Ghostscript で PDF ファイルからページの抽出ができた. 

❖  Ghostscript による PDF 書き出し(ページ指定)

Ghostscript (gs) コマンドのオプションでページを指定できる.
要は,"-dFirstPage" と "-dLastPage" で範囲を指定できる.

例えば,第1ページのみ書き出す場合,以下を実行すれば良い.

    $ gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dFirstPage=1    \
             -dLastPage=1 -sOutputFile=output.pdf input.pdf

また,第1ページから第4ページを書き出す場合,以下を実行すれば良い.

    $ gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -dFirstPage=1    \
             -dLastPage=4 -sOutputFile=output.pdf input.pdf

おわりに

PDF ファイルから指定したページを保存する方法の一つとして Ghostscript を用いた場合を紹介した.
Ghostscript は何かと便利なので,また機会があれば様々な用途を紹介したい.

PDF Check をパスしても "Certified by IEEE PDF eXpress" のラベルがない場合がある

IEEE PDF eXpress に悩まされたのでそのときのメモを残しておきます.

はじめに

ここでは,PDF Check をパスしたけれども,学会の投稿ページで投稿できない場合について述べます.


IEEE PDF eXpress のエラーについては一切触れません.
LaTeX 関連の知識が十分にあれば,おそらくエラーに遭遇することはないでしょう.
(参考までに,以前,私が所属する研究室の学生が遭遇したエラーは pLaTeX や upLaTeX を用いていたから発生したもので,LaTeX や pdfLaTeX を用いた場合はエラーが出なかった.)

 

❖  PDF Check をパスしても "Certified by IEEE PDF eXpress" のラベルがない

基本的に “Congratulations! The following PDF has passed the PDF Check: ~” から始まるメールに添付してあるPDFを提出すれば問題ないが,今回はそれを提出しようとしても “This PDF file was not certified by IEEE PDFeXpress” のエラーに阻まれた.

どうやら,PDF eXpress はエラーなく通っても,“Certified by IEEE PDF eXpress” のラベルが貼られないケースがあるらしい.

 

参加予定の学会の運営に問い合わせて,代わりに投稿してもらう方針になったが,投稿中にタイムアウトになったそうで,ファイルサイズを縮小するように指示された.

ファイルサイズを縮小した後,改めて PDF eXpress に通したところ,問題なく投稿できた.

 

一つ目の写真が PDF eXpress をパスしても,“Certified by IEEE PDFeXpress” のラベルが貼られていないもの.

二つ目の写真が問題なく投稿できたもの.コンテンツの作成の欄に“Certified by IEEE PDFeXpress” と記されている.

f:id:mhiraga:20190404190333p:plain

f:id:mhiraga:20190404190404p:plain

 

おわりに

何が原因だったのかいまいちわからないけれども,PDF eXpress をパスしても,“Certified by IEEE PDF eXpress” のラベルが貼られないケースがあるらしい.

今回は問題なく投稿できたものの,学会の運営も少し困惑していた様子だった.

二つの画像を見比べて,改めて思ったことは,もしかしたら PDF のバージョン(ファイル縮小前は1.5,縮小後は1.4)とかも関連しているのかもしれないと感じた.

 

【追記】PDF のバージョンが問題であったようで,pdf14 パッケージを用いてバージョン 1.4 にしたところ,正しくラベリングされていた.

Ubuntu 16.04 GNOME ログインループ

後輩のパソコンが不可解なログインループに遭遇したので,そのときの解決方法を記します.

背景

今回の症状は以下の通りである.

  • CUIからログインできてもGUIからログインできない.
  • 某N社のグラフィックカードを搭載していない.
  • 一部のアカウントにはGUIからログインできる(正確には,NFSサーバ上のアカウントにログインできず,パソコン内のアカウントにはログインできる).

 NFSサーバ上のアカウントのみGUIログインできないことがなかなかに不可解で,過去に先輩から研究室のシステムを変えたほうがいいと言われつつも,面倒に感じて何もしなかったツケが回ってきたような気がしました.

この現象を解決するのに苦戦したため,メモを残しておきます. 

❖  とりあえずやってみたこと(失敗したもの)

・ディスプレイマネージャーの再起動

N社のドライバのインストールで苦戦した経験がある者として,最初に疑ったのはディスプレイマネージャーである.
Ubuntu GNOME のディスプレイマネージャーであるgdmを再起動した.
ちなみに,GNOMEではない普通のUbuntuはlightdmがデフォルトになっているはず.

    sudo service gdm restart

 何も解決されず.

・.Xauthority .ICEauthority の削除
参考リンク:
Ubuntuで認証画面を無限ループさせる方法と対処 - 拾い物のコンパス

これらのファイルが破損しているとログインできなくなるようです.
CUIからログインして削除する.

    rm .Xauthority .ICEauthority

これまた,解決されず.

・Unity の初期化
参考リンク:
本の虫: Ubuntu 14.04のUnityの設定をぶっ壊した場合の修復方法

以前,似たようなことがあった際に,上記のリンクのようにUnityを初期化したら直ったと聞いた.
ここでいうUnityはゲームエンジンではなく,Ubuntuのユーザインターフェースである.
以下のように,unity-tweak-tool をインストールして初期化する.

    sudo apt-get install unity-tweak-tool
    unity-tweak-tool --reset-unity

しかし,これでも解決されなかった. 

❖  解決策

参考リンク:
[SOLVED] Login Problem in Ubuntu 16.04

以下のように,ubuntu-desktopとubuntu-sessionを再インストールしたら解決した.

    sudo apt install --reinstall ubuntu-desktop
    sudo apt install --reinstall ubuntu-session

結局,何が原因だったのかわかりませんでしたが,何かファイルが破損していたのかもしれません.

Vim で開いたら改行が " ^M " になっていたときの対処法

Vim で開いたファイルに,本来改行が入るはずの場所が "^M" に置き換わっていた.
これに対して,Vim における文字列の一括置換を用いて解決した.

❖ 背景

サーバにアップロードしたファイルを Vim で編集しようと試みたところ,
改行がすべて " ^M " に置き換わっており,1行のとても長いテキストと化していた.

これでは見ずらく,編集する箇所も見つけにくい.そして何より編集しづらい.

 

❖  Vim による"^M"の一括置換

Vim で文字列 (foo) を別の文字列 (bar) に置換するには,以下を実行する. 

    :%s/foo/bar/g


今回,"^M" を"改行"に置換するため,以下を実行した.

    :%s/^M/\r/g

ここで,"^M"は文字列ではなく,改行コードなので,入力時には,
     「 Ctrl 」+「 v 」+「 m 」
と入力する必要がある.

また,OSによって改行コードが " \r " と " \n " の場合があるので,場合によって使い分ける必要がある.

 

おわりに

今回,Vim で開いたファイルの改行すべきところに " ^M "が表示されていたときの対処法を紹介した.

Vim での一括置換の方法を紹介したが,指定行のみの置換などのより細かいオプションを知りたい者や,そもそも Vim の使い方がわからない者については,検索せよ,さらば与えられん. 

 

LaTeXで複数回タイプセットする手間を省く Latexmk

LaTeX のソースをコンパイルするときに,
LaTeXコンパイル」→「 BibTeXコンパイル」→「 LaTeXコンパイル」→「 LaTeXコンパイル
の手順を毎回行うのは面倒である.
そんなときに役に立つのは "Latexmk" である.

❖ 背景

それはとある学部4年生が卒論を書いていたときの話である. 

4年生「卒論の参考文献が ?? になってしまいます...」
私「もう一回タイプセットしてみ」
4年生「あっ,直りました!」

LaTeX のソースを正しく pdf へ変換するためには複数回タイプセットする必要がある.
この手間を省くために用いられるのが Latexmk である.

 

❖  Latexmk を用いてコンパイル

Latexmk は TeX をインストールしたときにデフォルトで含まれている場合がほとんどなので,導入するために特別な作業を必要としない.

私が英語で原稿を書くときは "pdflatex" を用いてコンパイルを行なっている.
この場合,以下のコマンドでコンパイルする. 

    $ latexmk -pdf foo.tex


日本語の原稿は "platex" を用いてコンパイルを行なっている.

しかし, latexmk には platex を用いるオプションが存在しないため,.latexmkrc に設定を書く必要がある.

全体の設定を変えるのであればホームディレクトリ下 ( ~/.latexmkrc ) に作成すれば良いが,原稿ごとに設定を変更したい場合などは .tex ファイルが存在するディレクトリに作れば良い.

 .latexmkrc は以下のように設定する.

    #!/usr/bin/env perl
    $latex= 'platex %O %S';
    $bibtex= 'pbibtex %O %B';
    $dvipdf= 'dvipdfmx %O %S';
    $pdf_mode= 3;

その後,以下のコマンドでコンパイルする. 

    $ latexmk foo.tex

 
また,コンパイルしたときに生じる副産物は以下のコマンドで削除することができる.

    $ latexmk -c

 

おわりに

LaTeX のソースをコンパイルするときに, latexmk を用いると便利である.

今回は .latexmkrc に記述したものがそれぞれどのような意味を持つのかを省いたが, latexmkrc で検索すれば多くの資料が得られるであろう.
それらの資料を参考にすることで,必要に応じて設定することができるであろう.

 

 

Eclipse で PyDev をインストールしたはずなのに表示されないときの対処法 ( Ubuntu 14.04 )

Eclipse に PyDev を手順通りにインストールしたはずなのに表示されないときの対処法 ( Ubuntu 14.04 ) .
今年研究室に配属された学部 4 年生たちが Python の環境を整えるのに苦労していたので書き記しておきます.

❖ 背景

Eclipse に PyDev (ver 5.1.2) をインストールしたとき,
 「 Window 」→「 Perspective 」→「 Open Perspective 」
からPyDevを開こうとしたが,選択肢の中に PyDev が表示されていなかった.

f:id:mhiraga:20160707224809p:plain

PyDev のホームページをみたところ,原因は Java のバージョンにあったようだ.

PyDev does not appear after install!

Well, the main issue at this time is that PyDev requires Java 8 in order to run. So, if you don't want to support PyDev by going the LiClipse route (which is mostly a PyDev standalone plus some goodies), you may have to go through some loops to make sure that you're actually using Java 8 to run Eclipse/PyDev (as explained below).

Also, keep in mind that PyDev 5.x requires Eclipse 4.5 onwards (for Eclipse 3.8 use PyDev 4.x).

Download - PyDev ( http://www.pydev.org/download.html )

 
❖ Ubuntu14.04 に OpenJDK 8 をインストール

現在使用中の Java のバージョンを確認するためには以下を端末に入力.

    $ java -version

Ubuntu14.04 で OpenJDK 8 をインストールする手順は以下のよう.

    $ sudo add-apt-repository ppa:openjdk-r/ppa
    $ sudo apt-get update
    $ sudo apt-get install openjdk-8-jdk

インストールが終了したら使用するJavaのバージョンを変更する.

    $ sudo update-alternatives --config java

java-8-openjdk に該当する番号を選択すれば良い.

参考URL
http://qiita.com/ytkumasan/items/0a6b9e512e3dd5c08a31 


Eclipse に PyDev が表示された

 Eclipse を再起動させると無事 PyDev が表示された.

f:id:mhiraga:20160707224916p:plain