6

PDF ファイルの特定のセクションを PNG にトリミングする必要があります (これは PHP で Ghostscript を使用して自動化されます)。これは、基本的にPDFの最初のページをPNGに変換する私が今やっていることです:

gs -q -dNOPAUSE -dBATCH \
   -sDEVICE=pngalpha -dEPSCrop \
   -sOutputFile=output.png input.pdf

具体的には、この左上のカードを PNGにトリミングしようとしています。また、これを達成する方法についての提案もお待ちしています。

4

2 に答える 2

18

最初に、
最初の PDF ページの境界ボックスを決定します。

gs                          \
 -q                         \
 -dBATCH                    \
 -dNOPAUSE                  \
 -sDEVICE=bbox              \
 -dLastPage=1               \
  stackoverflowQuestion.pdf \
2>&1                        \
| grep %%BoundingBox

結果の出力は次のようになります。

%%BoundingBox: 119 531 464 814

その意味は:

  • 境界ボックスの左下隅は座標にあります(119,531)
  • 境界ボックスの右上隅は座標にあります(464,814)

値はPostScript ポイント(ここで72 pt == 1 inch) です。境界ボックスは、ページにインクやトナーの跡を残すグラフィック PDF オブジェクトを含む長方形です。

次に、
PNG を作成します。

境界ボックスの値から導き出すと、幅 345 ポイント ( = 464 - 119)、高さ 283 ポイント( ) が必要なようです= 814 - 531。これにより、ページサイズは-g345x283(ピクセル単位で指定されます。Ghostscript は (特に指定されていない限り) 画像出力にデフォルトで 72 dpi を使用するため、72 px == 1 inch.

または、バウンディング ボックスから 1 pt 離れたセキュリティ ゾーンを維持することで、画像を最小値より少し大きくすると、次の画像の寸法が得られます-g347x285

また、左端から 119 ポイント (「セキュリティ」の場合は 118 ポイント)、下端から 531 ポイント (セキュリティの場合は 530) を切り取る必要があります。

したがって、コマンドは次のようになります。

gs                                                      \
  -o out.png                                            \
  -sDEVICE=pngalpha                                     \
  -g347x285                                             \
  -dLastPage=1                                          \
  -c "<</Install {-118 -530 translate}>> setpagedevice" \
  -f stackoverflowQuestion.pdf 

結果のPNGは次のとおりです。

out.png

PNG の品質を向上させるには、解像度をデフォルトの 72 dpi から 720 dpi に上げて、次のコマンドを使用します。

gs                                                      \
  -o out720dpi.png                                      \
  -sDEVICE=pngalpha                                     \
  -r720                                                 \
  -g3470x2850                                           \
  -dLastPage=1                                          \
  -c "<</Install {-118 -530 translate}>> setpagedevice" \
  -f stackoverflowQuestion.pdf 

アップデート:

CMD ウィンドウの Windows では、Ghostscript のコンソール アプリケーション名は(ではなく)gswin32c.exeおよび/またはです。また、(の代わりに)行継続文字として使用する必要があります。gswin64c.exegs^\

于 2012-09-18T21:04:38.460 に答える
0

Windows では、Ghostscript のコンソール アプリケーション名は(ではなく) gswin32c.exeand/orです。gswin64c.exegs

1.CMDウィンドウ

CMD ウィンドウでは、^(の代わりに\) 行継続文字として使用する必要があります。また、grep利用できない場合があります --findstr代わりに使用してください。最後に、gswinXX.exeが になく%PATH%、フル パスにスペースが含まれている場合は、引用符で囲む必要があります。

"c:\program files\ghostscript\gswin64c.exe" ^
 -q                         ^
 -dBATCH                    ^
 -dNOPAUSE                  ^
 -sDEVICE=bbox              ^
 -dLastPage=1               ^
  stackoverflowQuestion.pdf ^
| findstr %%BoundingBox

2.PowerShell ウィンドウ

PowerShell ウィンドウでは、実行可能ファイルへのフル パスを引用するだけでは機能しません。実行する必要があります:

& "c:\program files\ghostscript\gswin64c.exe" -q -o nul: -sDEVICE=bbox my.pdf
于 2016-07-02T20:36:43.227 に答える