FC2ブログ
Latex ~pdf作成できない!~

こんにちは!レポート作成にはLatexとWinshellを使っている管理人です。
レポート締め切り間際は慌ただしくなることがたまにありますが、そんな忙しい時になんとdviファイルからpdfが作成できないというトラブルが発生してしまいました。
その時はdviを一度xpsに変換してそれを更にpdfに変換するという方法で乗り切ったのですが、さすがに毎回その手順を踏むのはシンドいので、解決策を真剣に探してみて、解決したので以下にまとめていきます。

使用環境及び症状

私が遭遇した症状と、それが発生した環境は以下の通りです。

原因究明

さて、先ほど書いたように、エラーメッセージが出ていないため一体どこから手をつけようかと考えてみました。
dviは作成されて、pdfが作成されないことから、問題はdvipdfmxにあることが容易に想像出来ます。あとは詳細なエラーメッセージをどうやって手に入れるかです。

texコンパイル時に作成される.log ファイルを覗いてみましたが、関係のありそうなログは出力されていません。
そこでdvipdfmxをコマンドラインから起動することを考えてみました。

コマンドラインに以下のように入力します。


dvipdfmx "yourDviFileName.dvi"

yourDviFileNameの部分はご自身のdviファイル名に書き換えてください。これを実行すると以下の様なエラーメッセージが得られました。


1: C:\Documents and Settings\○○○\デスクトップ\check2>dvipdfmx -vv sample.dvi

2: <FONTMAP:psbase14.map><FONTMAP:dvipdfm.map><FONTMAP:cid-x.map>sample.dvi -> sample.pdf

3: DVI Comment: TeX output 2014.01.06:0839

4: <AGL:texglyphlist.txt><AGL:pdfglyphlist.txt><AGL:glyphlist.txt>[1(Image:tiger.ep

5: s[./tiger.eps][PS]

6: pdf_image>> Converting file "./tiger.eps" --> "C:/DOCUME~1/○○○/LOCALS~1/Temp/

7: dvipdfm-x.234052393bb13aa2f57d430326714f32" via:

8: pdf_image>> rungs -q -dNOPAUSE -dBATCH -dEPSCrop -sDEVICE=pdfwrite -dCompatibi

9: lityLevel=%v -dAutoFilterGrayImages=false -dAutoFilterColorImages=false -dGrayIm

10: ageFilter=/FlateEncode -dColorImageFilter=/FlateEncode -dUseFlateCompression=tru

11: e -sOutputFile='%o' -c .setpdfwrite -f '%i' -c quit

12: pdf_image>> ...GPL Ghostscript 9.10: **** Could not open temporary file ''

13: **** Unable to open the initial device, quitting.

14:

15: ** WARNING ** Filtering file via command -->rungs -q -dNOPAUSE -dBATCH -dEPSCrop

16: -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dAutoF

17: ilterColorImages=false -dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateE

18: ncode -dUseFlateCompression=true -sOutputFile='C:/DOCUME~1/○○○/LOCALS~1/Temp/

19: dvipdfm-x.234052393bb13aa2f57d430326714f32' -c .setpdfwrite -f './tiger.eps' -c

20: quit<-- failed.

21: ** WARNING ** Image format conversion for "./tiger.eps" failed...

22: ,Page:1)

23: ** ERROR ** pdf_ref_obj(): passed invalid object.

24:

25: Output file removed.

ちなみに自分が得た実際のエラーメッセージをコピーし損ねたので、上のエラーメッセージはこちらのページから拝借しました。

このメッセージからghostscriptの実行が上手くいってないということがわかります。(12行目あたりより。)

ここまでわかれば解決策に辿り着けそうです。

解決策

この問題を解決するために以下の手順を行いました。

  • C:\temp というフォルダが無ければ作成する。
  • ユーザー環境変数のTEMP,TMP,TMPDIRにC:\tempを指定する。%USEPROFILE~的な変数が指定されていたらそれと書き換える。

環境変数の変え方について分からない人は、私の以前の記事のPathの部分をTMPとかに読み替えていただければいいと思います。

上記手順を実行したところ、きちんとpdfが作成されるようになりました!
どうもghostscriptはUSERPROFILE以下にあるディレクトリが一時ファイルディレクトリに割り当てられていると、失敗することが多いようです。
これで安心してレポートが書けます笑

今回の問題を解決するにあたって、こちらのページを参考にさせていただきました。ありがとうございます。

スポンサーサイト



テーマ:トラブル - ジャンル:コンピュータ

[2014/03/29 19:37] | latex | トラックバック(0) | コメント(0) | page top
<<Tiff画像を作りたい!~C++ 導入編~ | ホーム | Windows8.1 explorer.exe クラッシュ!>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバック URL
http://infotech776.blog.fc2.com/tb.php/48-96bafa9a
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |