linuxサーバでpdfファイルの印刷

linuxサーバ上のjbossでpdfファイルを生成し印刷する必要が生じました。pdfはjasperReportなどで生成できますが、これを普通にlprとかしても日本語が出ません。jasperReport側でフォントの設定などをいろいろと変えてみたが解決せず。

サーバにacrobat readerを入れるという方法をためしてみました。

linuxサーバは64bitでacrobat readerは32bit版しか提供されていません。なので、AdbeRdr9.4.2-1_i486linux_jpn.tar.bz2をダウンロード、解凍し、

# cd AdobeReader
# ./INSTALL

としてインストール。

acroread -toPostScript -pairs foo.pdf foo.ps; lpr -P myprinter foo.ps

とすると印刷できました。ただしASCIIのフォントがちょっと変。

なお、linux上のacroreadはrootで実行するとエラーになってしまうので、別人になって実行する必要がある。scalaではこんな感じ。

val cmd = Array("su", "-", "nobody", "-c", "acroread -toPostScript -pairs foo.pdf foo.ps; lpr -P myprinter foo.ps")
val p = Process(cmd).run
if (p.exitValue != 0) {
println("異常終了 " + p.toString())
}