C#でGhostscriptを使ってPDFのページイメージをJpegファイルに保存する方法
2009/02/19 Thu 16:12:55 [edit]
Ghostscriptは、PDFファイルなどの画像ファイル変換には大変有益なソフトだが、いかんせんコマンドラインから実行しなければいけないというのが最大のネック。
このGhostscriptを扱いやすいように画像変換ソフトなどのGUIのアプリケーションにして活かせないかと考えてみた。それをC#で書いたらどうなるのかというと、先ずはコマンドライン上のパラメータも含めて全て外部アプリケーションを起動するやり方で呼び出せば良いというわけだ。例えば下の通り
// --- Ghostscriptによるpdf=>jpg変換
// --- 対象PDFパス
string strPdfPath = "C:\\Work\\Test001.pdf";
// --- Ghostscriptのパス
string strGSPath = "C:\\gs\\gs8.63\\bin\\gswin32c.exe";
int intFirstPage = 1; // --- 先頭ページ
int intLastPage = 5; // --- 最終ページ
Process extProcess = new Process();
// --- 起動するGhostscriptのパスを指定
extProcess.StartInfo.FileName = strGSPath;
extProcess.StartInfo.Arguments = " -dSAFER";
extProcess.StartInfo.Arguments += " -dBATCH";
extProcess.StartInfo.Arguments += " -dNOPAUSE";
extProcess.StartInfo.Arguments += " -sDEVICE=jpeg";
// --- 解像度指定
extProcess.StartInfo.Arguments += " -r72";
// --- 出力ファイル名
extProcess.StartInfo.Arguments += " -sOutputFile=temp%03d.jpg";
// --- 先頭ページ指定
extProcess.StartInfo.Arguments += " -dFirstPage=" + intFirstPage;
// --- 最終ページ指定
extProcess.StartInfo.Arguments += " -dLastPage=" + intLastPage;
// --- 入力Pdfファイルのパス指定
extProcess.StartInfo.Arguments += " " + strPdfPath;
// --- 新しいウィンドウで起動
extProcess.StartInfo.CreateNoWindow = true;
// --- シェル不使用
extProcess.StartInfo.UseShellExecute = false;
// --- プロセス開始
extProcess.Start();
// --- プロセス終了まで待つ
extProcess.WaitForExit();
// --- 後片付け
extProcess.Dispose();
一応、これはGhostscriptがインストールされていることが前提である。
これはこれで特に問題はないのだが、さらに突き進んでGhostscriptの心臓部であるgsdll32.dllを直接コールする方法については、現在模索中である。

このGhostscriptを扱いやすいように画像変換ソフトなどのGUIのアプリケーションにして活かせないかと考えてみた。それをC#で書いたらどうなるのかというと、先ずはコマンドライン上のパラメータも含めて全て外部アプリケーションを起動するやり方で呼び出せば良いというわけだ。例えば下の通り
// --- Ghostscriptによるpdf=>jpg変換
// --- 対象PDFパス
string strPdfPath = "C:\\Work\\Test001.pdf";
// --- Ghostscriptのパス
string strGSPath = "C:\\gs\\gs8.63\\bin\\gswin32c.exe";
int intFirstPage = 1; // --- 先頭ページ
int intLastPage = 5; // --- 最終ページ
Process extProcess = new Process();
// --- 起動するGhostscriptのパスを指定
extProcess.StartInfo.FileName = strGSPath;
extProcess.StartInfo.Arguments = " -dSAFER";
extProcess.StartInfo.Arguments += " -dBATCH";
extProcess.StartInfo.Arguments += " -dNOPAUSE";
extProcess.StartInfo.Arguments += " -sDEVICE=jpeg";
// --- 解像度指定
extProcess.StartInfo.Arguments += " -r72";
// --- 出力ファイル名
extProcess.StartInfo.Arguments += " -sOutputFile=temp%03d.jpg";
// --- 先頭ページ指定
extProcess.StartInfo.Arguments += " -dFirstPage=" + intFirstPage;
// --- 最終ページ指定
extProcess.StartInfo.Arguments += " -dLastPage=" + intLastPage;
// --- 入力Pdfファイルのパス指定
extProcess.StartInfo.Arguments += " " + strPdfPath;
// --- 新しいウィンドウで起動
extProcess.StartInfo.CreateNoWindow = true;
// --- シェル不使用
extProcess.StartInfo.UseShellExecute = false;
// --- プロセス開始
extProcess.Start();
// --- プロセス終了まで待つ
extProcess.WaitForExit();
// --- 後片付け
extProcess.Dispose();
一応、これはGhostscriptがインストールされていることが前提である。
これはこれで特に問題はないのだが、さらに突き進んでGhostscriptの心臓部であるgsdll32.dllを直接コールする方法については、現在模索中である。

スポンサーサイト
テーマ: プログラミング
ジャンル: コンピュータ
« CSVファイルのCR+LF
Perl言語でCSVファイルを読み込む »
コメントの投稿
この記事に対するコメント
トラックバック
PDFやPSなどのファイルはGhostScriptを使うことで、PNGやJpegなどの画像に変換することができる 素直研究所 技術開発部 C#でGhostscriptを使ってPDFのページイメージをJpegファイルに保存する方法 FreeBSD QandA 774 Ghostscript - TeX Wiki How to use Ghostscript 一番上
千鳥の午後への前奏曲
2009/08/29 21:05
| h o m e |