Linux環境でps2pdfを使えばワンコマンドで変換できますが、解像度指定・用紙サイズ・一括処理など、少し凝ったことをしようとすると途端に情報が少なくなります。
この記事では、ps2pdfコマンドの基本的な使い方から、解像度・用紙サイズの指定、複数ファイルの一括変換、逆変換(pdftops)、そしてよくあるトラブルへの対処法まで、実際のサーバー運用で役立つ実践的な使い方を解説します。
この記事のポイント
・ps2pdf は ghostscript に含まれ、ワンコマンドでPS→PDF変換が可能
・-dDEVICE=pdfwrite -r300 で解像度を指定して高品質PDFを作れる
・for文を使えば複数の.psファイルを一括でPDFへバッチ変換できる
・pdftopsコマンドで逆変換(PDF→PS)も同様に実行可能
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ps2pdfとは何か
ps2pdfは、PostScript形式(.ps)ファイルをPDF形式(.pdf)に変換するコマンドです。実体はGhostscriptのラッパースクリプトで、ghostscriptパッケージをインストールすると自動的に使えるようになります。PostScriptは、AdobeがプリンタやDTPで広く使ってきたページ記述言語です。古いシステムや特定のアプリケーションが出力するファイル形式として今でも現場に残っていることがあり、それをPDFへ変換するニーズは根強く残っています。
ps2pdfには用途別にいくつかのバリエーションがあります。
・ps2pdf:汎用的なPS→PDF変換(最もよく使う)
・ps2pdf12:PDF 1.2形式で出力(古いビューア向け)
・ps2pdf13:PDF 1.3形式で出力
・ps2pdf14:PDF 1.4形式で出力(透明度サポートが必要な場合)
通常の用途ではps2pdfで問題ありません。互換性を気にする場合にps2pdf12~14を選ぶと考えてください。
ghostscriptのインストール方法
ps2pdfを使うにはghostscriptが必要です。まずインストール状況を確認してから、必要に応じてインストールします。1. インストール状況の確認
# インストール済みか確認(RHEL/CentOS/AlmaLinux系) rpm -qa | grep ghostscript # インストール済みか確認(Ubuntu/Debian系) dpkg -l | grep ghostscript # ps2pdfコマンドの場所を確認 which ps2pdf
2. ghostscriptのインストール
# RHEL 8/9・AlmaLinux・Rocky Linux sudo dnf install ghostscript # CentOS 7 sudo yum install ghostscript # Ubuntu/Debian sudo apt install ghostscript
ps2pdfの基本的な変換方法
1. 最も基本的なコマンド形式
# 基本形式 ps2pdf 入力ファイル.ps 出力ファイル.pdf # 実際の例 ps2pdf document.ps document.pdf
# 出力ファイル名を省略した場合 ps2pdf document.ps # → document.pdf がカレントディレクトリに作成される # 実行例(実際のサーバー上での出力) [admin@linuxsrv01 ~]$ ls -lh total 68M -rw-r--r-- 1 admin admin 65M May 9 10:22 report_2026.ps [admin@linuxsrv01 ~]$ ps2pdf report_2026.ps [admin@linuxsrv01 ~]$ ls -lh total 72M -rw-r--r-- 1 admin admin 65M May 9 10:22 report_2026.ps -rw-r--r-- 1 admin admin 5.2M May 9 10:23 report_2026.pdf
2. 標準入力から変換する方法
パイプを使って標準入力からPDFを生成することもできます。# 標準入力からの変換 cat document.ps | ps2pdf - output.pdf # lprコマンドと組み合わせてプリンタ出力の代わりにPDF化 some_command | ps2pdf - result.pdf
解像度と用紙サイズを指定した変換
デフォルトのps2pdfでは解像度や用紙サイズが自動判定になります。出力品質を制御したい場合はオプションを明示的に指定します。1. 解像度の指定(-dDEVICE=pdfwrite -r)
# 300dpiで変換(印刷向けの一般的な設定) ps2pdf -dDEVICE=pdfwrite -r300 input.ps output.pdf # 72dpiで変換(Web表示向け・ファイルサイズ優先) ps2pdf -dDEVICE=pdfwrite -r72 input.ps output.pdf # 600dpiで変換(高品質印刷向け) ps2pdf -dDEVICE=pdfwrite -r600 input.ps output.pdf
2. 用紙サイズの指定
A4など特定の用紙サイズを指定する場合は `-sPAPERSIZE=a4` を使います。# A4サイズで変換 ps2pdf -sPAPERSIZE=a4 input.ps output.pdf # レターサイズ(米国標準)で変換 ps2pdf -sPAPERSIZE=letter input.ps output.pdf # 用紙サイズ + 解像度を同時指定 ps2pdf -sPAPERSIZE=a4 -r300 input.ps output.pdf
3. PDFバージョンの互換性設定
# PDF 1.4互換(透明度サポートが必要な場合) ps2pdf14 input.ps output.pdf # PDF 1.5以降で圧縮を最適化 ps2pdf -dCompatibilityLevel=1.5 -dPDFSETTINGS=/screen input.ps output.pdf
複数のPostScriptファイルを一括変換する方法
大量の.psファイルをまとめてPDFに変換したいケースは現場でよくあります。for文を使ったバッチ処理が効率的です。1. for文による一括変換
# カレントディレクトリの全.psファイルを変換 for f in *.ps; do ps2pdf "$f" "${f%.ps}.pdf" done # 実行例(サーバー上での操作) [admin@linuxsrv01 reports]$ ls *.ps jan_report.ps feb_report.ps mar_report.ps [admin@linuxsrv01 reports]$ for f in *.ps; do ps2pdf "$f" "${f%.ps}.pdf"; done [admin@linuxsrv01 reports]$ ls *.pdf jan_report.pdf feb_report.pdf mar_report.pdf
2. サブディレクトリを含めた再帰的な一括変換
# findコマンドと組み合わせてサブディレクトリも含めて変換 find /data/reports -name "*.ps" | while read f; do dir=$(dirname "$f") base=$(basename "$f" .ps) ps2pdf "$f" "${dir}/${base}.pdf" echo "変換完了: $f -> ${dir}/${base}.pdf" done
3. 変換ログを残すスクリプト
本番環境での一括変換はログを残して実行するのがベストプラクティスです。#!/bin/bash # ps2pdf_batch.sh — PostScriptファイルの一括PDF変換スクリプト LOGFILE="/var/log/ps2pdf_batch.log" TARGET_DIR="${1:-.}" # 引数でディレクトリを指定、省略時はカレント SUCCESS=0 FAIL=0 echo "=== ps2pdf 一括変換 $(date '+%Y-%m-%d %H:%M:%S') ===" >> "$LOGFILE" find "$TARGET_DIR" -name "*.ps" | while read f; do out="${f%.ps}.pdf" if ps2pdf "$f" "$out" 2>> "$LOGFILE"; then echo "[OK] $f -> $out" >> "$LOGFILE" else echo "[NG] 変換失敗: $f" >> "$LOGFILE" fi done echo "=== 完了 $(date '+%Y-%m-%d %H:%M:%S') ===" >> "$LOGFILE"
pdftopsコマンドでPDFをPostScriptに逆変換する方法
ps2pdfの逆方向(PDF→PostScript)はpdftopsコマンドを使います。pdftopsはpoppler-utilsパッケージに含まれています。1. pdftopsのインストールと基本的な使い方
# インストール(RHEL/AlmaLinux系) sudo dnf install poppler-utils # インストール(Ubuntu/Debian系) sudo apt install poppler-utils # 基本的な変換 pdftops document.pdf document.ps # 出力ファイル名を省略した場合(.pdfを.psに変えたファイルが作成される) pdftops document.pdf
2. オプションの使い方
# 特定ページだけを変換(2~5ページ目) pdftops -f 2 -l 5 document.pdf pages_2to5.ps # レベル2のPostScript形式で出力(古いプリンタ向け) pdftops -level2 document.pdf output.ps # Encapsulated PostScript(EPS)形式で出力 pdftops -eps document.pdf output.eps
トラブルシュートとよくあるエラーへの対処
「command not found: ps2pdf」が出た場合
ghostscriptがインストールされていないか、PATHが通っていない状態です。# ghostscriptのインストール確認 rpm -qa | grep ghostscript # または which gs # インストールされていなければインストール sudo dnf install ghostscript # インストール後にパスを確認 ls -l /usr/bin/ps2pdf
変換後のPDFが文字化けしている場合
日本語を含むPostScriptファイルを変換すると文字化けが発生することがあります。フォントの埋め込みに関するオプションを指定することで改善できる場合があります。# フォントを埋め込んで変換 ps2pdf -dEmbedAllFonts=true input.ps output.pdf # CIDフォント(日本語など)の処理を改善 ps2pdf -dSubsetFonts=true -dEmbedAllFonts=true input.ps output.pdf
「Error: /undefined in ps2pdf」が出た場合
PostScriptファイルが壊れているか、ghostscriptが解釈できない形式になっています。# ghostscriptで詳細エラーを確認 gs -sDEVICE=pdfwrite -sOutputFile=output.pdf -dBATCH -dNOPAUSE input.ps # PostScriptファイルの先頭行を確認(%!PS-Adobe-x.x で始まっているか) head -3 input.ps
変換に非常に時間がかかる場合
大容量のPostScriptファイルやページ数が多いファイルはghostscriptの処理に時間がかかります。# ghostscriptの処理状況を確認(別ターミナルで) ps aux | grep gs # I/O状況を確認 # iotopが必要(sudo dnf install iotop) sudo iotop -o # バックグラウンドで実行してログで状況確認 ps2pdf large_file.ps large_file.pdf > /var/log/ps2pdf.log 2>&1 & tail -f /var/log/ps2pdf.log
本記事のまとめ
ps2pdfコマンドの主な使い方をまとめます。| やりたいこと | コマンド |
|---|---|
| 基本的なPS→PDF変換 | ps2pdf input.ps output.pdf |
| A4サイズ・300dpiで変換 | ps2pdf -sPAPERSIZE=a4 -r300 input.ps output.pdf |
| フォントを埋め込んで変換 | ps2pdf -dEmbedAllFonts=true input.ps output.pdf |
| 一括変換(for文) | for f in *.ps; do ps2pdf "$f" "${f%.ps}.pdf"; done |
| 標準入力からPDF化 | cat input.ps | ps2pdf - output.pdf |
| PDF→PSへ逆変換 | pdftops document.pdf document.ps |
| ghostscriptのインストール(RHEL系) | sudo dnf install ghostscript |
| poppler-utils(pdftops用)インストール | sudo dnf install poppler-utils |
ps2pdfはghostscriptが入っていれば追加ツール不要で使えるシンプルなコマンドです。基本的な変換から用紙サイズ・解像度の指定、一括バッチ処理まで、実務の要件に合わせて使い分けてください。
Linuxのファイル操作やコマンドについてもっと詳しく学びたい方には、Linux 基本コマンドの解説も参考にしてください。また、ファイルのマウント・ファイルシステム管理についてはmount コマンドの使い方で解説しています。
PostScript変換に限らず、Linuxの操作で「毎回ネット検索している」と感じていませんか?
個々のコマンドを調べるだけでなく、サーバー構築の全体像を体系的に把握しておけば、トラブル対応も格段にスムーズになります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:Linuxサーバー構築の標準構成ガイド|Webアプリ向けディレクトリ・サービス・パーティション設計
- 前のページへ:while readコマンドでシェルスクリプトのファイルを1行ずつ処理する方法|IFS設定とCSV・ログ解析の実践例も
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます