ps2pdfコマンドでPostScriptをPDFに変換する方法|LinuxでのPDF変換の実践例

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > ps2pdfコマンドでPostScriptをPDFに変換する方法|LinuxでのPDF変換の実践例
「PostScriptファイルをPDFに変換したいけど、どうすればいい?」
Linux環境でps2pdfを使えばワンコマンドで変換できますが、解像度指定・用紙サイズ・一括処理など、少し凝ったことをしようとすると途端に情報が少なくなります。

この記事では、ps2pdfコマンドの基本的な使い方から、解像度・用紙サイズの指定、複数ファイルの一括変換、逆変換(pdftops)、そしてよくあるトラブルへの対処法まで、実際のサーバー運用で役立つ実践的な使い方を解説します。

この記事のポイント

・ps2pdf は ghostscript に含まれ、ワンコマンドでPS→PDF変換が可能
・-dDEVICE=pdfwrite -r300 で解像度を指定して高品質PDFを作れる
・for文を使えば複数の.psファイルを一括でPDFへバッチ変換できる
・pdftopsコマンドで逆変換(PDF→PS)も同様に実行可能


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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

インストール後に `gs --version` または `ps2pdf --version` でバージョンを確認しておくと、後でトラブルシュートするときに役立ちます。

ps2pdfの基本的な変換方法

1. 最も基本的なコマンド形式

# 基本形式 ps2pdf 入力ファイル.ps 出力ファイル.pdf # 実際の例 ps2pdf document.ps document.pdf

出力ファイル名を省略するとカレントディレクトリに入力ファイル名の拡張子だけを.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

PostScriptファイルはサイズが大きくなりがちですが、PDFに変換すると大幅に圧縮されることが多いです。上の例でも65MB→5.2MBと10分の1以下になっています。

2. 標準入力から変換する方法

パイプを使って標準入力からPDFを生成することもできます。

# 標準入力からの変換 cat document.ps | ps2pdf - output.pdf # lprコマンドと組み合わせてプリンタ出力の代わりにPDF化 some_command | ps2pdf - result.pdf

`-`(ハイフン)が標準入力を表します。パイプラインでPostScript形式の出力を受け取り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

解像度を上げるほどファイルサイズが大きくなります。Web配布用なら72~150dpi、印刷用なら300~600dpiが目安です。

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

主な用紙サイズの指定値:a3、a4、a5、b4、b5、letter、legal、11x17など。デフォルトはLetterサイズ(米国基準)になっている環境があるため、A4を前提にするなら必ず明示的に指定することをおすすめします。

3. PDFバージョンの互換性設定

# PDF 1.4互換(透明度サポートが必要な場合) ps2pdf14 input.ps output.pdf # PDF 1.5以降で圧縮を最適化 ps2pdf -dCompatibilityLevel=1.5 -dPDFSETTINGS=/screen input.ps output.pdf

`-dPDFSETTINGS` オプションで品質プリセットを指定することもできます。`/screen`(Web表示向け低品質)、`/ebook`(電子書籍向け中品質)、`/printer`(印刷向け高品質)、`/prepress`(最高品質)から選べます。

複数の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

`${f%.ps}` はbashのパラメータ展開で、変数`f`の末尾から`.ps`を取り除いた文字列になります。ファイル名の一部だけを変えた出力ファイル名を作るのに便利です。

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

それでも文字化けが解消しない場合は、変換元のPostScriptファイルにフォント情報が含まれていない可能性があります。元のアプリケーションでPostScript出力時にフォントを埋め込む設定を確認してください。

「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ファイルは先頭行が `%!PS-Adobe-3.0`(または2.0、1.0)のように始まります。この行がなければ、PostScript形式のファイルとして認識されていない可能性があります。

変換に非常に時間がかかる場合

大容量の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

Linux ポート確認の全コマンドのようにプロセスの状態確認は `ps aux` コマンドと組み合わせることで確認できます。

本記事のまとめ

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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。