PDFのページを途中で分割するにはどうすればよいですか?


38

誰かがpdfのページを真ん中から2つの新しいページに分割する良い方法を知っていますか?

明確にするために、PDFから既存のページを分割しようとはしていません。既存の単一ページから2つの新しいページを作成しようとしています。


なぜあなたはこれをしたいのですか?小さいページを取得していますか?
アキラ

まあMS Officeがフリーウェアではありませんが、MSのOffice 2007を持っている場合は、あなただけのPDFファイルなどの文書救うことができるとあなた下さい...のようにしてください
オーウェン


回答:


26

BRISSをお試しください。

代替テキスト

GUIで領域を定義することにより、各ページを必要な数のサブページに分割できます。同様のすべてのページがグループにグループ化されるため、そのグループのリージョンを一度定義できます。

クロスプラットフォームで、無料で、オープンソースです。


これは、元のページコンテンツとトリミングされたページごとにクロップボックスを使用するため、ファイルサイズが大きくなるようです(「入力ページあたりの出力ページ数」)。小さなファイルサイズが必要な場合は、出力ファイルをPSに印刷してからPDFに変換できますが、その場合は品質が低下する可能性があります(たとえば、ビットマップフォントのため)。
タニウス

37

Ghostscriptを使用してこれを解決できます。pdftkそれだけではできません(私の知る限り)。これを手動で行うためのコマンドライン手順を紹介します。ページサイズとページ番号のさまざまなパラメーターを使用して、これをプロシージャとして簡単にスクリプト化できます。しかし、あなたはそれを自分でできると言った;-)

Ghostscriptを使用してこれを解決する方法...

...そしてその楽しみのために、私は最近、「ダブルアップ」ページを備えた入力ファイルではなく、「トレブルアップ」を備えた入力ファイルでそれ行いました。この場合の回答は、この他の応答で読むことができます。

あなたのケースはさらにシンプルです。次のようなものがあるようです。

+------------+------------+   ^
|            |            |   |
|      1     |      2     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
             ^
            fold
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

4ページのPDFを1つ作成します。各ページのサイズは421 pt x 595 ptです。

最初の一歩

最初に、各入力ページから左側のセクションを抽出しましょう。

gs \
    -o left-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [0 0]>> setpagedevice" \
    -f double-page-input.pdf

これらのパラメーターは何をしましたか?

まず、PDFで1インチ== 72ポイントであることを知ってください。それから残りは:

  • -o ...............:出力ファイルに名前を付けます。暗黙的にも使用し-dBATCH -dNOPAUSE -dSAFERます。
  • -sDEVICE=pdfwrite : 出力形式としてPDFが必要です。
  • -g................:出力メディアのサイズをピクセル単位で設定します。pdfwriteのデフォルトの解像度は720 dpiです。したがって、10を乗算してPageOffsetの一致を取得します。
  • -c "..............:Ghostscriptに、メイン入力ファイルの直前に、指定されたPostScriptコードスニペットを処理するよう要求します(これはに従う必要があります-f)。
  • <</PageOffset ....:メディア上のページ画像のシフトを設定します。(もちろん、左のページの場合、シフトによる[0 0]影響はありません。)
  • -f ...............: この入力ファイルを処理します。

最後のコマンドはどの結果を達成しましたか?

これです:

Output file: left-sections.pdf, page 1
+------------+  ^
|            |  |
|     1      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: left-sections.pdf, page 2
+------------+  ^
|            |  |
|     3      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

第二段階

次に、適切なセクション:

gs \      
    -o right-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [-421 0]>> setpagedevice" \
    -f double-page-input.pdf

結果:

Output file: right-sections.pdf, page 1
+------------+  ^
|            |  |
|     2      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: right-sections.pdf, page 2
+------------+  ^
|            |  |
|     4      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

最後のステップ

次に、ページを1つのファイルに結合します。ghostscriptでも同様にできますが、pdftk代わりに使用します。このジョブの方が高速だからです。

pdftk \
  A=right-sections.pdf \
  B=left-sections.pdf \
  shuffle A B \
  output single-pages-output.pdf
  verbose

できた これが望ましい結果です。4つの異なるページ、サイズ421x595 pt。

結果:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->

3
きれい!無料でアップ投票を続けたい場合は、すべての回答でこれを実際に使用する必要があります!
イヴォFlipse

2
2番目のステップは、負のオフセットを使用した場合にのみ機能しました:"<</PageOffset [-421 0]>> setpagedevice"。元のファイルの向きに依存すると思います。それにもかかわらず優れた答え。:)
モラ

1
私にとって、2番目のステップもマイナス記号で動作しました
ラファリーノ

9

@martttとUnix&Linuxでの回答に感謝します。

以下を使用できますmutool(これはの一部として提供されますmupdf):

mutool poster -x 2 input.pdf output.pdf

-y垂直分割を実行する場合にも使用できます。


これは簡単な解決策です、ありがとう。残念ながら、ページ上のコンテンツをシフトしてマージンを調整する方法はありません。そのためには、Kurt Pfeifleが説明した方法を使用してください。
ヤンラリンスキー

0

@Kurtの答えを拡張するには(コメントするのに十分なレピュテーションポイントがないため)、最初に使用するサイズがメディアボックスのサイズと異なる場合、クロップボックスのサイズに基づいていないことを確認します。出力サイズはメディアボックスのサイズに基づいていますが、オフセットはクロップボックスのサイズを使用しているようです。

20.0833 x 13.833のメディアボックスと、ドキュメントのトリムボックスと同じ19.25 x 13.0のクロップボックスがあるゲートフォールドページの場合、Ubuntuで左側の2つのページに分割します。

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf

右側:

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf

そして、それらをでステッチしましたpdftk left.pdf right.pdf output final.pdf

別の方法は、トリミングボックスをメディアボックスと同じに設定することです。オフセットは-723になります。ただし、ページをシームレスに表示するには、トリミングをリセットしてトリミングする必要があります。それ以外の場合は、メディアをトリミングに設定します。


これらのコマンドオプションでページを分割した後、メディアボックスは変更されないことに注意してください。作物のみが変化します。1ページを複数のページに分割すると、新しいページは古いページのメディアボックスの寸法を維持します。メディアボックスの寸法を変更するにはsedが必要です。コマンドに数値を含めずにメディアボックスをトリミングするように設定する方法はわかりませんが。
motorbaby

おっとっと。つまり、新しいページでは、古いページのクロップボックスのサイズが維持されます。
motorbaby

Acrobat PDFのバグを発見しました。視覚的に、cropBoxの寸法は、AcrobatのSet Page Boxesで確認できます。ただし、Ghostscriptを使用してゲートフォールドを分割した後のcropBoxの寸法は、古いページの寸法を別のレベルに保持していました。これは、Acrobatのプリフライト分析情報で確認できます。Acrobatで左側のページの右側のトリミングを一時的に任意の数に調整してから0に戻した後、他のボックスのサイズ(裁ち落とし、アート、およびトリミング)も調整されました。これにより、cropBoxデータに古いページのサイズが表示される問題が修正されました。右のページは少し異なっていました。
motorbaby
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.