Ghostscript を使用して、背景が透明な PDF ファイルを背景が透明な PNG ファイルにラスタライズしようとしましたが、うまくいきませんでした。同じことを試みている他の人からの質問を高低で検索しましたが、投稿された解決策はどれも -sDEVICE=pngalpha を指定することに帰着し、私のテスト ファイルで動作しませんでした。この時点で、経験豊富な方からのアドバイスやヒントをいただければ幸いです。
私のテスト PDF はここにあります: http://www.kolossus.com/files/test.pdf
問題はこのファイルにある可能性がありますが、私はそれを疑っています。私が知る限り、指定された背景はありません。Photoshop や Illustrator などの透明度を認識するアプリでファイルを開くと、確かに透明な背景で表示されます。ただし、Adobe Reader などのアプリケーションで開くと、ファイルは白い背景でレンダリングされます。これは、PDF 自体よりも PDF をレンダリングするアプリケーションに関係していると私は信じています。よくわかりません。
私が使用している gs コマンドは次のとおりです。
gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r72 -sOutputFile=test.png test.pdf
これにより、ファイル内のアートワークのバウンディング ボックスの外側に透明なピクセルを持つ PNG が生成されますが、アートワークのバウンディング ボックスの内側にあるすべてのピクセルは白い背景に対してラスタライズされます。私のアートワークには、最終出力で保持する必要があるドロップ シャドウとアンチエイリアス処理されたエッジがあり、ImageMagick で後処理することはできないため、これは私にとって問題です。私の PNG 出力のサンプルは、上記の pdf と同じ場所にあり、末尾に .png があります (stackoverflow では、投稿に複数の URL を含めることはできません)。
興味深いことに、-dBackgroundColor=16#ff0000 のように白以外に設定しても、-dBackgroundColor フラグを使用しても効果は見られません。おそらく、このフラグの構文に関する私の理解は間違っています。
また興味深いことに、-dTextAlphaBits=4 -dGraphicsAlphaBits=4 フラグを使用してサブピクセル アンチエイリアシングを有効にしようとしても効果が見られません。また、特にテキストでサブピクセル アンチエイリアシングを有効にする方法についてアドバイスをいただければ幸いです。
最後に、私は Mac OS 10.5.7 で GPL Ghostscript 8.64 を使用しています。設定しようとしているレンダリング ワークフローは、PrinceXML によって出力された PDF から透明な PNG 画像を生成することです。ImageMagick は PDF のラスタライズを Ghostscript に委任し、GS を直接呼び出すことでラスタライズをより適切に制御できるはずなので、ImageMagick を使用する代わりにラスタライズのために直接 Ghostscript を呼び出しています。
ご協力いただきありがとうございます。
-ジョン・ウルフ