でらてーげー(^_^)/

沖縄病名古屋人の趣味的日常

PDFからTIFFに変換する

あるCADから高解像度のTIFFが欲しいのに
直接には150DPI程度しか出ないことが分かったので、
ベクトルであるPDFに吐いて、
GPL GhostScriptでTIFFに変換するスクリプトを通すことにした。
複数シートのPDFは個別のファイルに分解したかったので、
pdftkを使ってプロパティを取得する小ワザも加えてある。
<br /> <?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?><br /> <package><br /> <job id="PDF2Tiff"><br /> <?job error="True" debug="True" ?><br /> <object id="objFs" progid="Scripting.FileSystemObject" /><br /> <script language="JavaScript"><br /> &lt;![CDATA[<br /> //----------------------------------------------------------------------<br /> // PDF->TIFF 変換バッチスクリプト<br /> // 複数のPDFをDrag&Dropで渡すとTIFFに変換する<br /> // 同じフォルダに、変換元PDFデータと<br /> // gswin32c.exe、gsdll32.dll (GPL GhostScript 9.04 <a href="http://www.ghostscript.com/)">http://www.ghostscript.com/)</a><br /> // pdftk.exe、libiconv2.dll (pdf toolkit 1.44 <a href="http://www.pdflabs.com/)">http://www.pdflabs.com/)</a><br /> // が必要。<br /> // このコードの元ネタは<br /> // 「@IT:Windows TIPS -- Tips:複数ファイルの文字列置換をワンクリックで行なう」<br /> // <a href="http://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html">http://www.atmarkit.co.jp/fwin2k/win2ktips/308strrpl/strrpl.html</a><br /> //----------------------------------------------------------------------<br /> var objArg=WScript.Arguments; /* D&Dしたファイルをオブジェクトにする */<br /> for(i=0;i<objArg.length;i++){<br /> // PDFのプロパティをファイルに書き出す<br /> strGs=objFs.BuildPath(objFs.GetParentFolderName(WScript.ScriptFullName),"pdftk.exe");<br /> strTmp=objFs.BuildPath(objFs.GetParentFolderName(WScript.ScriptFullName),objFs.GetTempName());<br /> strCmd=strGs+" "+objArg(i)+" dump_data output "+strTmp;<br /> var objWshShell = WScript.CreateObject("WScript.Shell");<br /> ReturnCode = objWshShell.Run(strCmd, 0, true);<br /> var objTs =objFs.OpenTextFile(strTmp,1,false);<br /> //一時ファイルに出力したPDFのパラメータから、ページ枚数の記述を検索する<br /> do{<br /> strLne=objTs.ReadLine();<br /> if (strLne.indexOf("NumberOfPages:")>=0) {<br /> cnt=strLne.substring(14,20);<br /> }<br /> }while(!objTs.AtEndOfStream);<br /> objTs.Close();<br /> objFs.DeleteFile(strTmp);<br /> //複数枚数ならば、元のファイル名に枝番をつけて個別に出力する。<br /> if(cnt>1){<br /> strTs=objFs.GetBaseName(objArg(i))+"-%d.tiff";<br /> }else{<br /> strTs=objFs.GetBaseName(objArg(i))+".tiff";<br /> }<br /> strTs=objFs.BuildPath(objFs.GetParentFolderName(WScript.ScriptFullName),strTs);<br /> strGs=objFs.BuildPath(objFs.GetParentFolderName(WScript.ScriptFullName),"gswin32c.exe");<br /> var objWshShell = WScript.CreateObject("WScript.Shell");<br /> ReturnCode = objWshShell.Run(strGs+" -q -dBATCH -dNOPAUSE -sDEVICE=tiffg4 -r400 -sOutputFile="+strTs+" "+objArg(i), 0, true);<br /> }<br /> ]]><br /> </script><br /> </job><br /> </package><br /> <br />


同じカテゴリー(仕事の小ネタ/覚書)の記事
wsfを使った小ワザ
wsfを使った小ワザ(2011-11-26 11:11)

iMacros は使える。
iMacros は使える。(2011-11-17 00:34)

ロボット展なう。
ロボット展なう。(2011-11-09 12:20)


 
この記事へのコメント
結局、ファイル保存ではなくて印刷機能を使うと400DPIが出せることが分かったのでこのスクリプトは洋ナシになりました。
Posted by こすもす♂こすもす♂ at 2012年02月25日 23:20
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。