Bagaimana saya bisa membagi halaman PDF ke tengah?

38

Adakah yang tahu cara yang baik untuk membagi halaman pdf menjadi dua halaman baru?

Untuk lebih jelasnya, saya tidak mencoba membagi halaman yang sudah ada dari pdf; Saya mencoba membuat dua halaman baru dari satu halaman yang sudah ada.

YGA
sumber
mengapa kamu ingin melakukan ini? mendapatkan halaman yang lebih kecil?
akira
Yah MS Office bukan freeware, tetapi jika Anda memiliki MS Office 2007, maka Anda bisa menyimpan dokumen sebagai file PDF dan melakukan sesukamu ...
Owen
Lihat juga stackoverflow.com/q/13345593/321973
Tobias Kienzler

Jawaban:

26

Coba BRISS .

teks alternatif

Ini memungkinkan Anda membagi setiap halaman menjadi subhalaman sebanyak yang Anda inginkan dengan mendefinisikan wilayah dengan GUI. Ini mengelompokkan semua halaman yang sama ke dalam grup untuk Anda, sehingga Anda dapat menentukan wilayah untuk grup itu sekali.

Ini cross-platform, gratis, dan open-source.

luar biasa
sumber
Tampaknya ini meningkatkan ukuran file (kali "jumlah halaman output per halaman input"), karena menggunakan konten halaman asli dan kotak potong untuk setiap halaman yang dipotong. Jika Anda memerlukan ukuran file yang kecil, Anda dapat mencetak file output ke PS dan kemudian mengkonversi ke PDF, tetapi Anda mungkin kehilangan kualitasnya (misalnya, karena font bitmap).
tanius
37

Anda dapat menyelesaikan ini dengan bantuan Ghostscript. pdftksendiri tidak bisa melakukan itu (sejauh pengetahuan saya). Saya akan memberi Anda langkah-langkah commandline untuk melakukan ini secara manual. Ini akan mudah untuk skrip ini sebagai prosedur, juga dengan parameter berbeda untuk ukuran halaman dan nomor halaman. Tetapi Anda mengatakan bahwa Anda dapat melakukannya sendiri ;-)

Cara mengatasi ini dengan bantuan Ghostscript ...

... dan untuk bersenang-senang, saya baru-baru ini melakukannya bukan dengan file input yang menampilkan halaman "ganda", tetapi satu dengan "treble-up". Anda dapat membaca jawaban untuk kasus ini di respons lain ini .

Kasing Anda bahkan lebih sederhana. Anda sepertinya memiliki sesuatu yang mirip dengan ini:

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

Anda ingin membuat 1 PDF dengan 4 halaman, masing-masing memiliki ukuran 421 pt x 595 pt.

Langkah pertama

Pertama mari kita ekstrak bagian kiri dari masing-masing halaman input:

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

Apa yang dilakukan parameter ini?

Pertama, ketahuilah bahwa dalam PDF 1 inci == 72 poin . Maka sisanya adalah:

  • -o ...............:Nama file keluaran. Secara implisit juga menggunakan -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : kami ingin PDF sebagai format output.
  • -g................:mengatur ukuran media keluaran dalam piksel. Resolusi default pdfwrite adalah 720 dpi. Maka kalikan dengan 10 untuk mendapatkan kecocokan untuk PageOffset.
  • -c "..............:meminta Ghostscript untuk memproses cuplikan kode PostScript yang diberikan tepat sebelum file input utama (yang perlu diikuti -f).
  • <</PageOffset ....:mengatur pemindahan gambar halaman pada media. (Tentu saja, untuk halaman kiri, pergantian oleh [0 0]tidak memiliki efek nyata.)
  • -f ...............: memproses file input ini.

Hasil apa yang dicapai perintah terakhir?

Yang ini:

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

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

Tahap kedua

Selanjutnya, bagian yang tepat:

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

Hasil:

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

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

Langkah terakhir

Sekarang kita menggabungkan halaman menjadi satu file. Kita bisa melakukannya dengan ghostscript juga, tetapi kita akan menggunakannya pdftksebagai gantinya, karena lebih cepat untuk pekerjaan ini:

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

Selesai Inilah hasil yang diinginkan. 4 halaman berbeda, berukuran 421x595 pt.

Hasil:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
Kurt Pfeifle
sumber
3
Cantik! Anda harus benar-benar menggunakan ini di setiap jawaban jika Anda ingin mendapatkan upvotes gratis!
Ivo Flipse
2
Langkah kedua hanya bekerja untuk saya ketika saya menggunakan negatif offset: "<</PageOffset [-421 0]>> setpagedevice". Saya kira itu tergantung pada orientasi file asli. Meskipun demikian, jawaban yang sangat bagus. :)
moraes
1
Bagi saya langkah kedua juga bekerja dengan tanda minus
Rafareino
9

Terima kasih kepada @marttt dan jawabannya di Unix & Linux .

Anda dapat menggunakan mutool(yang merupakan bagian dari mupdf):

mutool poster -x 2 input.pdf output.pdf

Anda juga dapat menggunakan -yjika Anda ingin melakukan split vertikal.

Peque
sumber
Ini solusi sederhana, terima kasih. Sayangnya, tidak ada cara untuk menggeser konten pada halaman untuk menyesuaikan margin - untuk itu gunakan metode yang dijelaskan oleh Kurt Pfeifle.
Ján Lalinský
0

Untuk memperluas jawaban @ Kurt (karena saya tidak memiliki poin reputasi yang cukup untuk berkomentar) pertama-tama pastikan dimensi yang Anda gunakan tidak didasarkan pada dimensi Crop Box jika mereka berbeda dari dimensi Media Box. Ukuran output didasarkan pada dimensi Media Box, tetapi offset tampaknya menggunakan dimensi Crop Box.

Untuk halaman gatefold yang memiliki kotak media 20.0833 x 13.833 dan kotak potong 19.25 x 13.0 yang sama dengan kotak trim di dokumen saya, untuk membaginya menjadi dua halaman di Ubuntu, untuk sisi kiri:

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

Sisi kanan:

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

Dan kemudian menjahitnya pdftk left.pdf right.pdf output final.pdf.

Alternatifnya adalah dengan mengatur kotak krop menjadi sama dengan kotak media; maka offsetnya adalah -723. Namun, pemangkasan harus diatur ulang untuk memangkas agar halaman-halamannya tampak mulus. Jika tidak, atur media untuk memotong.

motorbaby
sumber
Catatan, setelah memisahkan halaman dengan opsi perintah ini, kotak media tidak berubah. Hanya krop yang berubah. Jika Anda membagi satu halaman menjadi beberapa halaman, halaman baru menjaga dimensi kotak media dari halaman lama. Perlu sed untuk memodifikasi dimensi kotak media. Meskipun tidak tahu cara mengatur kotak media untuk memotong tanpa memasukkan angka dalam perintah.
motorbaby
Ups. Maksud saya halaman baru menjaga dimensi kotak potong dari halaman lama.
motorbaby
Menemukan bug dengan Acrobat PDF. Secara visual, dimensi cropBox dapat dilihat di Set Page Boxes di Acrobat. Tapi dimensi cropBox setelah menggunakan Ghostscript untuk membagi gatefold membuat dimensi halaman lama di level lain. Ini bisa dilihat di info Analisis Preflight di Acrobat. Setelah menyesuaikan pangkasan dalam Acrobat di sisi kanan halaman kiri sementara ke nomor acak dan kemudian mengembalikannya ke 0, dimensi kotak lainnya (berdarah, gambar, dan memangkas) juga disesuaikan. Ini memperbaiki masalah di mana data cropBox masih menunjukkan dimensi halaman yang lama. Halaman kanan sedikit berbeda.
motorbaby