web-dev-qa-db-ja.com

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

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

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

40
YGA

[〜#〜] briss [〜#〜] を試してください。

alt text

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

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

26
frabjous

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

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

...そしてそれを楽しむために、私は最近、「ダブルアップ」ページを特徴とする入力ファイルを使用してしないを行いましたが、 「高音」。この場合の答えは この他の応答 で読むことができます。

あなたのケースはさらに簡単です。あなたはこれに似たものを持っているようです:

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

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

最初の一歩

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

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

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

まず、PDF1インチ== 72ポイントであることを確認してください。その後、残りは次のようになります。

  • -o ...............:出力ファイルに名前を付けます。暗黙的に-dBATCH -dNOPAUSE -dSAFERも使用します。
  • -sDEVICE=pdfwrite :出力形式としてPDFが必要です。
  • -g................:は、出力メディアのサイズをピクセル単位で設定します。 pdfwriteのデフォルトの解像度は720 dpiです。したがって、PageOffsetの一致を得るために10を掛けます。
  • -c "..............:は、Ghostscriptに対して、メイン入力ファイル(-fが後に続く必要がある)の直前に、指定されたPostScriptコードスニペットを処理するように要求します。
  • <</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 -->
39
Kurt Pfeifle

@ martttとその nixおよびLinuxでの回答に感謝

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

mutool poster -x 2 input.pdf output.pdf

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

10
Peque

@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になります。ただし、ページをシームレスに表示するには、トリミングをリセットしてトリミングする必要があります。それ以外の場合は、メディアをトリミングに設定します。

0
motorbaby

Krop(Python)とPDFscissors(Java)はまだ言及されていません。適切なプレゼンテーションPDFに戻したいpdfnup-ped講義ノート。

http://arminstraub.com/software/krop

https://sites.google.com/site/pdfscissors/

0
eMPee584