web-dev-qa-db-ja.com

Ghostscript 9.01を使用してPDFをトリミング

私はプログラマーではありませんが、Ghostscriptを使用してPDFをトリミングする方法を学びたいです。

Ghostscript 9.01をマシンにインストールしました。

特定の座標を使用してPDF.

私はGhostscriptを初めて使用します。

35
AMER

まず、PDFの測定単位はPostScriptの場合と同じであることに注意してください。これはpoint[pt ]。

72 points == 1 inch == 25.4 millimeters

A4のページサイズがあると仮定します。メディアの寸法は次のとおりです。

595 points width  == 210 millimeters
842 points height == 297 millimeters

切り取りたいと仮定すると:

   left Edge: 24 points == 1/3 inch ~=  8.5 millimeters
  right Edge: 36 points == 1/2 inch ~= 12.7 millimeters
    top Edge: 48 points == 2/3 inch ~= 17.0 millimeters
 bottom Edge: 72 points ==   1 inch ~= 25.4 millimeters

次に、Ghostscriptコマンドラインは次のとおりです(Windowsの場合):

gswin32c.exe                     ^
  -o cropped.pdf                 ^
  -sDEVICE=pdfwrite              ^
  -c "[/CropBox [24 72 559 794]" ^
  -c " /PAGES pdfmark"           ^
  -f uncropped-input.pdf

またはLinuxの場合:

gs                               \
  -o cropped.pdf                 \
  -sDEVICE=pdfwrite              \
  -c "[/CropBox [24 72 559 794]" \
  -c " /PAGES pdfmark"           \
  -f uncropped-input.pdf

ただし、これはすべてのタイプのPDFで確実に機能するとは限りません [1]。これらの場合、代わりにこれらのコマンドを試してください:

gswin32c.exe                 ^
  -o cropped.pdf             ^
  -sDEVICE=pdfwrite          ^
  -dDEVICEWIDTHPOINTS=595    ^
  -dDEVICEHEIGHTPOINTS=842   ^
  -dFIXEDMEDIA               ^
  -c "24 72 translate"       ^
  -c " 0 0 535 722 rectclip" ^
  -f uncropped-input.pdf

または

gs                           \
  -o cropped.pdf             \
  -sDEVICE=pdfwrite          \
  -dDEVICEWIDTHPOINTS=595    \
  -dDEVICEHEIGHTPOINTS=842   \
  -dFIXEDMEDIA               \
  -c "24 72 translate"       \
  -c " 0 0 535 722 rectclip" \
  -f uncropped-input.pdf

[^]: 具体的には、特定の値に既に定義されている独自の/CropBoxが付属しているPDFでは機能しません。これを回避するための不正な方法は、上記のGSコマンドを実行する前に、テキストエディターで/CropBox(または同様の大文字と小文字の変更)が必要なすべてのページの文字列/cROPBoXを変更することです。大文字と小文字の変更は、クロップボックス設定を効果的に「解除」します(PDFオブジェクトオフセットを変更せずに既存のxrefテーブルを無効にする)。したがって、PDFレンダラー。

64
Kurt Pfeifle