pdfファイルからjpgファイルに変換するソフトをご紹介下さい。お気持ちのみですが成果に応じて100~300p差し上げます。


有料・無料を問いません。
ただし以下の条件を満たすことが条件です。

・1つのフォルダに格納された、5000個のpdfファイルを全て一度にjpgファイルに変換すること。

・複数ページのpdfに対応していること。



以下のリンク先にあげられているソフトの半数以上は要求を満たしませんでした。半数はチェックできていないので確認して使用方法を教えてください。

http://q.hatena.ne.jp/1112614560


次の質問にも答えてください。

・複数ページのpdfをjpgにした場合複数のjpgファイルが生成されるのか?それとも1つのjpgファイルを生成するのか?(後者が非常に望ましい)

回答の条件
  • 1人3回まで
  • 登録:2006/10/20 23:19:15
  • 終了:2006/10/27 18:54:31

ベストアンサー

id:ardarim No.7

ardarim回答回数896ベストアンサー獲得回数1442006/10/21 16:19:01

ポイント100pt

面目ないです...

start /w の使い方を間違えていました。

Const ExeFile As String = "C:\gs\gs8.53\bin\gswin32c.exe"
Const BatFile As String = "C:\test\convert.bat"
Const InputPath As String = "C:\test\input\"
Const OutputPath As String = "C:\test\output\"

Sub GenerateBatFile()

    Dim fn As Integer
    Dim r As Long
    Dim m As Long
    Dim cmd As String
    Dim PDFFile As String
    
    fn = FreeFile()
    Open BatFile For Output Access Write As #fn
    
    For r = 1 To 5000
        PDFFile = ActiveSheet.Cells(r, 1).Value
        If PDFFile = "" Then Exit For
        PDFFile = Left$(PDFFile, Len(PDFFile) - 4)     '拡張子を削除
        
        cmd = "start /w " & ExeFile
        cmd = cmd & " -dSAFER -dBATCH -dNOPAUSE"
        cmd = cmd & " -dFirstPage=1 -dLastPage=100"
        cmd = cmd & " -sDEVICE=jpeg -r144"
        cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & "-^%03d.jpg"
        cmd = cmd & " " & InputPath & PDFFile & ".pdf"
        Print #fn, cmd
        
    Next r

    Close #fn

End Sub

これでページごとにも出力できると思いますが、、、なにぶん手元に環境がないため動作は保証できません。すみません。

id:ReoReo7

おかげ様でかなり完成に近づきました。

あと1点、

cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & "-^%03d.jpg"

の行のせいでエラーが出るようです。この行を

cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & ".jpg"

に置換したら生成できました。

ただし、複数ページあるpdfファイルは最初の1ページしか生成されませんが・・・(同じ名前のファイルがある場合生成しないからなのか、複数ページのpdfの変換は最初の1pしか行っていないからなのかは分かりませんでした。)

2006/10/21 19:02:46

その他の回答(6件)

id:KairuaAruika No.1

KairuaAruika回答回数6926ベストアンサー獲得回数972006/10/20 23:30:51

ポイント18pt

ページ全体をjpgにしたいんですよね?

ページの中に出現するイメージをjpgとして切り出すのではないんですよね?

一応,後者の仕方は,

アドバンスト/全ての画像を書き出し

でjpg形式を選択すれば,全て書き出していってくれます。

id:ReoReo7

ありがとうございます。ページ全体をjpgにしたいです。

5000個のファイルをひとつひとつを書き出していくということでしょうか?それは労力的に不可能です。


5000個のpdfを5000個のjpgに変換したいのです。

2006/10/21 13:14:54
id:junono No.2

junono回答回数695ベストアンサー獲得回数282006/10/20 23:53:48

ポイント17pt

使ったことのないソフトのご紹介で申し訳ないですが、

いきなり®PDF to Data 2

http://www.sourcenext.com/titles/use/72780/

で出来そうです。ただ複数ページが一つのJPEGファイルになるのかは説明にないのでわかりませんでした。

id:myrmecoleon No.3

myrmecoleon回答回数45ベストアンサー獲得回数72006/10/21 00:18:00

ポイント17pt

http://lefsy.com/diary/20041111.html

↑これで紹介している方法のとおりにghostscriptとpdf2jpg.batを用意して,pdf2jpg.batに5000個のPDFファイルを送るバッチファイルを書いて実行すれば,一発でJPEG画像に変換できると思います。


ただし,残念ながらページ1枚につきJPEG画像1枚です。

id:ReoReo7

ありがとうございます。

1)バッチファイルの書き方が分かりません。pdf2jpgはデスクトップにあります。

2)pdfファイルは5000個の名前はあるexcelファイルのある列にありますがそのまま使えますか?

2006/10/21 01:03:49
id:yo_co No.4

yo_co回答回数153ベストアンサー獲得回数12006/10/21 00:36:41

ポイント17pt

標準のPDFソフトで画像として印刷にチェックを入れてTIFF保存をすると

単ページづつ保存がきます。

(確実ではありませんが、JPEG保存もこの時点で選択できたかもしれません)

http://acrobat3d.kabu.staba.jp/?cid=12144

こちらのようなソフトで一括変換されてはどうでしょう。

http://www.vector.co.jp/soft/win95/art/se200307.html

id:ReoReo7

ありがとうございます。しかし、使い方がわかりません。

このような提案は頂くのですが、pdfフォルダをjpgフォルダに変換するまでの手順を明確に示して頂けると助かります。当方acrobatなど初心者です。

2006/10/21 13:15:21
id:ardarim No.5

ardarim回答回数896ベストアンサー獲得回数1442006/10/21 03:46:30

ポイント17pt

myrmecoleonさんの回答のやり方がよいと思います。


PDFファイル名がExcelファイルに書かれているのであれば、以下のようなマクロを作成して、バッチファイルを自動生成して、その後バッチファイルを実行すればよいかと思います。


(Excelから実行させてもよいのですが、ExcelマクロからGhostscriptを実行させるのはマクロが複雑になるので、ここではバッチファイルを生成するやり方にしました)


以下、サンプルです。


Const ExeFile As String = "C:\gs\gs8.53\bin\gswin32c.exe"
Const BatFile As String = "C:\test\convert.bat"
Const InputPath As String = "C:\test\input\"
Const OutputPath As String = "C:\test\output\"

Sub GenerateBatFile()

    Dim fn As Integer
    Dim r As Long
    Dim m As Long
    Dim cmd As String
    Dim PDFFile As String
    
    fn = FreeFile()
    Open BatFile For Output Access Write As #fn
    
    For r = 1 To 5000
        PDFFile = ActiveSheet.Cells(r, 1).Value
        If PDFFile = "" Then Exit For
        PDFFile = Left$(PDFFile, Len(PDFFile) - 4)     '拡張子を削除
        
        cmd = "start /w """ & ExeFile & """"
        cmd = cmd & " -dSAFER -dBATCH -dNOPAUSE"
        cmd = cmd & " -sDEVICE=jpeg -r144"
        cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & ".jpg"
        cmd = cmd & " " & InputPath & PDFFile & ".pdf"
        Print #fn, cmd
        
    Next r

    Close #fn

End Sub
  • ExeFileには、Ghostscriptのインストール先を入れます。
  • BatFileは、出力するバッチファイル名を入れます。
  • InputPathは、pdfファイルがあるディレクトリを入れます。
  • OutputPathは、jpgファイルを出力するディレクトリを入れます。

シートのA列1行目からPDFファイル名(xxxx.pdf)が入っていると仮定しています。

Ghostscript自体は使ったことがないので、引数は実際に1つか2つ手動で変換してみて必要があれば増やしたり減らしたりしていただくのがよいかと思います。

id:ReoReo7

ご丁寧にありがとうございます。早速試してみました。

下のバッチファイルを生成することができました。

start /w "C:\gs\gs8.53\bin\gswin32c.exe" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r144 -sOutputFile=C:\kakomon\jpg\2497.jpg C:\kakomon\pdf\2497.pdf

これですが、

"C:\gs\gs8.53\bin\gswin32c.exe"

の"  "(ダブルクオーテーション)があるせいで実行できないみたいです。

置換すれば実行できたのですが、置換に時間がかかるのでマクロでダブルクオーテーションを書かないようにするにはどうしたらいいでしょうか?

それから複数ページが変換できないので、対応できたらうれしいです・・。

2006/10/21 16:22:43
id:myrmecoleon No.6

myrmecoleon回答回数45ベストアンサー獲得回数72006/10/21 08:17:06

ポイント100pt

http://q.hatena.ne.jp/1161353952#a623471

3の回答に補足です。


説明するより作った方が早いので,自分の学習もかねて複数ファイルのドラッグアンドドロップが可能なpdf2jpg.batを作ってみました。あと使ってて画質が悪いと思ったので,高画質で出力するようになってます(その分,ファイルサイズが大きいです)。

http://myrmecoleon.sytes.net/pdf2jpg5000.bat

(右クリックで保存してください。不正なコードは書いてませんが,問題ありそうなら使用前にエディタでチェックしてくださいな)


これに変換したいPDFファイルをまとめてドラッグアンドドロップしちゃってください。たぶんいけます。

id:ReoReo7

ありがとうございました。早速実行したところ、できました!

ただ、複数ページのpdfは無理みたいですね(何も生成されない)。

複数ページのjpgファイルを生成するにはどうしたらいいでしょうか?名前は

a.pdf が a-1.pdf a-2.pdf a-3.pdf・・・

と生成されるようになればいいのですが・・。

2006/10/21 15:09:11
id:ardarim No.7

ardarim回答回数896ベストアンサー獲得回数1442006/10/21 16:19:01ここでベストアンサー

ポイント100pt

面目ないです...

start /w の使い方を間違えていました。

Const ExeFile As String = "C:\gs\gs8.53\bin\gswin32c.exe"
Const BatFile As String = "C:\test\convert.bat"
Const InputPath As String = "C:\test\input\"
Const OutputPath As String = "C:\test\output\"

Sub GenerateBatFile()

    Dim fn As Integer
    Dim r As Long
    Dim m As Long
    Dim cmd As String
    Dim PDFFile As String
    
    fn = FreeFile()
    Open BatFile For Output Access Write As #fn
    
    For r = 1 To 5000
        PDFFile = ActiveSheet.Cells(r, 1).Value
        If PDFFile = "" Then Exit For
        PDFFile = Left$(PDFFile, Len(PDFFile) - 4)     '拡張子を削除
        
        cmd = "start /w " & ExeFile
        cmd = cmd & " -dSAFER -dBATCH -dNOPAUSE"
        cmd = cmd & " -dFirstPage=1 -dLastPage=100"
        cmd = cmd & " -sDEVICE=jpeg -r144"
        cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & "-^%03d.jpg"
        cmd = cmd & " " & InputPath & PDFFile & ".pdf"
        Print #fn, cmd
        
    Next r

    Close #fn

End Sub

これでページごとにも出力できると思いますが、、、なにぶん手元に環境がないため動作は保証できません。すみません。

id:ReoReo7

おかげ様でかなり完成に近づきました。

あと1点、

cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & "-^%03d.jpg"

の行のせいでエラーが出るようです。この行を

cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & ".jpg"

に置換したら生成できました。

ただし、複数ページあるpdfファイルは最初の1ページしか生成されませんが・・・(同じ名前のファイルがある場合生成しないからなのか、複数ページのpdfの変換は最初の1pしか行っていないからなのかは分かりませんでした。)

2006/10/21 19:02:46
  • id:ardarim
    "-^%03d.jpg" の部分を、"-%%03d.jpg" に変えてみてください。

    %03d というのは、出力するファイルを 001、002、003、・・・のようにページごとにするGhostscriptのオプション指定なのですが、% という文字はバッチファイルで特別な意味を持っているために書き方が特殊なのです。
    ^%でいけるかと思いましたが、だめなようなので %% なら大丈夫かもしれません。
  • id:myrmecoleon
    およ。うちの環境だと普通に複数ページのPDFにも対応してるのですが。いくつかのPDFを試してみましたけどちゃんと出来てますね。不思議。
    とりあえず,ファイル出力の設定を"test.pdf-001.jpg"風に出すように変更。ファイル名は以前と同じ。あと高画質設定が適用されてなかったみたいなので修正。FirstPageとLastPageの指定もはずす(すべてをJPEG化ならこれでもいいはず)。
    http://myrmecoleon.sytes.net/pdf2jpg5000.bat

    ちょっとこれ以上になるとお手上げかも。
    まあardarimさんのメソッドで上手くいってるようなので,こちらはこれくらいに。
  • id:ReoReo7
    おかげさまで所望の動作が得られました。
    どうも、ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません