- pdftkPDFファイルのページを操作する
- pdf2psPDFファイルをPSに変換する
- ghostscriptPostScript全般
「GhostScript」カテゴリーアーカイブ
GhostScriptでPDFをPNGに透過で書き出す際のおかしな挙動
名刺[55x91mm]に塗り足し3mmとトンボ9mmを追加したデータ[79x115mm]をTCPDFで作製し、それを画像化していたのですが、一定の解像度(400dpi)を超えると透過に失敗することが判明しました。
350と600で書き出したかったのですが、設計し直しですかね…
となみにスクリプトはPHPで、こんな感じ。
$command = sprintf("%s -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pngalpha -dEPSCrop -r%d -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile=%s %s",
(isset($_SERVER['WINDIR']) ? 'gswin32c' : 'gs'),
$dpi,
$to,
$from
);
ImageMagickで解像度の指定がうまく行かない
PDF形式のファイルをPNG形式に変換するには、GhostScriptを使って変換しているわけですが、解像度が微妙な数値になるのが気になっていました。
例えば、350dpiを指定しても、実際には349.987dpiになるという具合です。
内部ではinchで格納しているデータをmmに変換する際の誤差なので大きな問題ではないのですが、見た目麗しくないので何とかならないのかと。
そうだ、ImageMagickで解像度の設定を更新すれば対応できるはずだということで検索。
http://aligach.net/diary/20091019.html によると
convert INFILE -size SRC_SIZE -scale TARGET_SIZE -density 350x350 \
-units PixelsPerInch OUTFILE
ということらしいけど、実際にやると「px/inch」ではなく「px/cm」になってしまう。
http://www.imagemagick.org/script/command-line-options.php#density
http://www.imagemagick.org/script/command-line-options.php#units
などによれば、
「-density」で解像度の数値と、「-units」で「PixelsPerInch」を同時に指定すればOKとあるものの、やはりだめ。
別の関数でやってみればと、
mogrify -density 350 -units PixelsPerCentimeter imagepath
でも、やはりだめ。
ちなみに、Windows上での話でバージョンは次の通り
ImageMagick 6.8.3-0 2013-02-13 Q16
環境によっては違うのかも?
ネット印刷受注システムPOASにPSD入稿を実装
ネット印刷受注システムPOASで、PhotoshopのPSD形式に対応しました。
拡張機能となりますので、別途契約が必要になります。
現在使える状態になっていますが、近いうちに判定機能を追加します。
機能の概要としては、
レイヤを合成して画像化します。
解像度を調べて仕上サイズを推測します。
PSDファイルのまま入稿できます。
プリントライで問い合わせがあったので、先送りにしていた機能を前倒しで導入しました。
GhostScriptでPDFを画像化する際にジャギーが目立つ
GhostScriptでPostScript系のデータを画像化できるわけですが、
「-dTextAlphaBits=4」
というおまじないが効かないことがあるようです。
アンチエイリアスを設定できることになっているのですが、PDFには効かないようです。
EPSは有効です。
PDFで設定が効かないのであれば、4倍大きいサイズで画像化してからアンチエイリアスを有効にして1/4にリサイズを行うことで対応できますが、
A4サイズ程度のデータになると、かなりのマシンパワーが必要になるため現実的ではありません。
他に何らかのオプションがあるのかどうか、また気が向いたら調べてみます。