有料・無料を問いません。
ただし以下の条件を満たすことが条件です。
・1つのフォルダに格納された、5000個のpdfファイルを全て一度にjpgファイルに変換すること。
・複数ページのpdfに対応していること。
以下のリンク先にあげられているソフトの半数以上は要求を満たしませんでした。半数はチェックできていないので確認して使用方法を教えてください。
http://q.hatena.ne.jp/1112614560
次の質問にも答えてください。
・複数ページのpdfをjpgにした場合複数のjpgファイルが生成されるのか?それとも1つのjpgファイルを生成するのか?(後者が非常に望ましい)
面目ないです...
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
これでページごとにも出力できると思いますが、、、なにぶん手元に環境がないため動作は保証できません。すみません。
ページ全体をjpgにしたいんですよね?
ページの中に出現するイメージをjpgとして切り出すのではないんですよね?
一応,後者の仕方は,
アドバンスト/全ての画像を書き出し
でjpg形式を選択すれば,全て書き出していってくれます。
ありがとうございます。ページ全体をjpgにしたいです。
5000個のファイルをひとつひとつを書き出していくということでしょうか?それは労力的に不可能です。
5000個のpdfを5000個のjpgに変換したいのです。
使ったことのないソフトのご紹介で申し訳ないですが、
いきなり®PDF to Data 2
http://www.sourcenext.com/titles/use/72780/
で出来そうです。ただ複数ページが一つのJPEGファイルになるのかは説明にないのでわかりませんでした。
http://lefsy.com/diary/20041111.html
↑これで紹介している方法のとおりにghostscriptとpdf2jpg.batを用意して,pdf2jpg.batに5000個のPDFファイルを送るバッチファイルを書いて実行すれば,一発でJPEG画像に変換できると思います。
ただし,残念ながらページ1枚につきJPEG画像1枚です。
ありがとうございます。
1)バッチファイルの書き方が分かりません。pdf2jpgはデスクトップにあります。
2)pdfファイルは5000個の名前はあるexcelファイルのある列にありますがそのまま使えますか?
標準のPDFソフトで画像として印刷にチェックを入れてTIFF保存をすると
単ページづつ保存がきます。
(確実ではありませんが、JPEG保存もこの時点で選択できたかもしれません)
http://acrobat3d.kabu.staba.jp/?cid=12144
こちらのようなソフトで一括変換されてはどうでしょう。
ありがとうございます。しかし、使い方がわかりません。
このような提案は頂くのですが、pdfフォルダをjpgフォルダに変換するまでの手順を明確に示して頂けると助かります。当方acrobatなど初心者です。
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
シートのA列1行目からPDFファイル名(xxxx.pdf)が入っていると仮定しています。
Ghostscript自体は使ったことがないので、引数は実際に1つか2つ手動で変換してみて必要があれば増やしたり減らしたりしていただくのがよいかと思います。
ご丁寧にありがとうございます。早速試してみました。
下のバッチファイルを生成することができました。
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"
の" "(ダブルクオーテーション)があるせいで実行できないみたいです。
置換すれば実行できたのですが、置換に時間がかかるのでマクロでダブルクオーテーションを書かないようにするにはどうしたらいいでしょうか?
それから複数ページが変換できないので、対応できたらうれしいです・・。
http://q.hatena.ne.jp/1161353952#a623471
3の回答に補足です。
説明するより作った方が早いので,自分の学習もかねて複数ファイルのドラッグアンドドロップが可能なpdf2jpg.batを作ってみました。あと使ってて画質が悪いと思ったので,高画質で出力するようになってます(その分,ファイルサイズが大きいです)。
http://myrmecoleon.sytes.net/pdf2jpg5000.bat
(右クリックで保存してください。不正なコードは書いてませんが,問題ありそうなら使用前にエディタでチェックしてくださいな)
これに変換したいPDFファイルをまとめてドラッグアンドドロップしちゃってください。たぶんいけます。
ありがとうございました。早速実行したところ、できました!
ただ、複数ページのpdfは無理みたいですね(何も生成されない)。
複数ページのjpgファイルを生成するにはどうしたらいいでしょうか?名前は
a.pdf が a-1.pdf a-2.pdf a-3.pdf・・・
と生成されるようになればいいのですが・・。
面目ないです...
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
これでページごとにも出力できると思いますが、、、なにぶん手元に環境がないため動作は保証できません。すみません。
おかげ様でかなり完成に近づきました。
あと1点、
cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & "-^%03d.jpg"
の行のせいでエラーが出るようです。この行を
cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & ".jpg"
に置換したら生成できました。
ただし、複数ページあるpdfファイルは最初の1ページしか生成されませんが・・・(同じ名前のファイルがある場合生成しないからなのか、複数ページのpdfの変換は最初の1pしか行っていないからなのかは分かりませんでした。)
おかげ様でかなり完成に近づきました。
あと1点、
cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & "-^%03d.jpg"
の行のせいでエラーが出るようです。この行を
cmd = cmd & " -sOutputFile=" & OutputPath & PDFFile & ".jpg"
に置換したら生成できました。
ただし、複数ページあるpdfファイルは最初の1ページしか生成されませんが・・・(同じ名前のファイルがある場合生成しないからなのか、複数ページのpdfの変換は最初の1pしか行っていないからなのかは分かりませんでした。)