Konversi PDF 2 sisi per halaman menjadi 1 sisi per halaman

11

Bagaimana saya bisa mengkonversi PDF dengan 2 sisi per halaman ke 1 sisi per halaman?

pengguna13910
sumber
Ini benar-benar gila! Apakah tidak ada cara untuk mengubah pengaturan halaman dalam PDF menjadi satu sisi, bukan dua sisi?
Nathan Fellman
@Nathan Fellman: Gila, ya. Tetapi hal-hal gila terkadang memberi Anda kesenangan ;-)
Kurt Pfeifle
Kemungkinan duplikat dari Bagaimana saya bisa membagi halaman PDF di tengah?
Skippy le Grand Gourou
@ SkippyleGrandGourou Saya tidak melihat bagaimana pertanyaan itu terkait. Bukankah pertanyaannya mencoba melakukan dua hal berbeda dengan halaman?
Ben N
@ Ben: Kedua pertanyaan bertanya bagaimana "membuat dua halaman baru dari satu halaman yang ada", mengutip yang lain. Jawaban yang paling banyak dipilih adalah hampir copypasta.
Skippy le Grand Gourou

Jawaban:

23

OK, masalahnya sudah diselesaikan dengan bantuan Acrobat (versi lengkap, bukan Reader). Tetapi apa yang harus dilakukan jika Anda tidak memiliki akses ke Acrobat? Mungkinkah ini dilakukan dengan Ghostscript dan pdftk juga?

Cara mengatasi ini dengan bantuan Ghostscript ...

... dan untuk bersenang-senang, jangan gunakan file input dengan halaman "double-up", tetapi file dengan "treble-up". Sebenarnya, saya menerima satu PDF seperti itu hari ini melalui email. Itu adalah selebaran, terlipat dalam Skema Leporello . Ukuran lembar A4 landscape (842pt x 595pt), dan dilipat dan ditata seperti ini:

Front side to be printed, page 1 of PDF
+--------+--------+--------+   ^
|        |        |        |   |
|   5    |   6    |   1    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
         ^        ^
        fold     fold
         v        v
+--------+--------+--------+   ^
|        |        |        |   |
|   2    |   3    |   4    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->

Saya ingin membuat 1 PDF dengan 6 halaman, masing-masing memiliki ukuran 280.67pt x 595 pt.

Langkah pertama

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

gswin32c.exe ^
    -o left-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [0 0]>> setpagedevice" ^
    -f myflyer.pdf

Apa yang dilakukan parameter ini?

  • -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
+--------+  ^
|        |  |
|   5    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

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

Tahap kedua

Sekarang mari kita lakukan hal yang analog dengan bagian tengah:

gswin32c.exe ^
    -o center-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [280.67 0]>> setpagedevice" ^
    -f myflyer.pdf

Hasil:

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

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

Langkah ketiga

Terakhir, bagian yang tepat:

gswin32c.exe ^
    -o right-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [561.34 0]>> setpagedevice" ^
    -f myflyer.pdf

Hasil:

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

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

Langkah terakhir

Sekarang kami menggabungkan halaman menjadi satu file:

pdftk.exe ^
  A=right-sections.pdf ^
  B=center-sections.pdf ^
  C=left-sections.pdf ^
  cat A1 B2 C2 A2 B1 C1 ^
  output single-files-input.pdf
  verbose

Selesai Inilah hasil yang diinginkan. 6 halaman berbeda, berukuran 280.67x595.

Hasil:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 
Kurt Pfeifle
sumber
1
Omong kosong, seni yang luar biasa di sini!
Ivo Flipse
Ini bekerja dengan baik untuk saya, tetapi saya harus mengatur PageOffset ke angka negatif untuk mendapatkan bagian lain.
Jonchang
Anda dapat menggunakan Python untuk PDF yang lebih besar: f = open("order.dat","w") for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i)) f.close()Ini akan membuat file order.dat dengan "A1 B1 A2 B2 ... A63 B63". Anda kemudian dapat menyalin dan menempelkannya ke pdftk.
Suuuehgi
3

@ims, terima kasih. Inilah versi langkah-demi-langkah dari metode Anda. Saya mencobanya pada file yang ingin saya konversi untuk Kindle DX saya, dan berfungsi dengan baik:

  • Gunakan versi lengkap Acrobat v9 untuk memotong sisi kiri halaman, dan simpan sebagai "left.pdf":
    • Gunakan alat potong untuk menandai sisi kiri halaman.
    • Klik kanan, dan pilih "Set Cropbox".
    • Pilih "Document..Crop Pages", dan terapkan pemangkasan ke seluruh dokumen.
  • Ulangi dengan halaman kanan, simpan sebagai "right.pdf".
  • Pada tahap ini, Anda memiliki dua dokumen: "left.pdf" dengan halaman tangan kiri, dan "right.pdf" dengan halaman tangan kanan.

Selanjutnya, gunakan pdftk.exe (dari http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ) untuk menyisipkan hasil ke dalam satu file. Salin "pdftk.exe", "left.pdf" dan "right.pdf" ke "D: \", dan jalankan:

  • D:> pdftk D: \ left.pdf burst output% 05d_A.pdf
  • D:> pdftk D: \ right.pdf burst output% 05d_B.pdf
  • D:> pdftk * _ ?. pdf cat output gabungan.pdf

Catatan: jika Anda menyalin file ke "C: \", itu tidak akan berfungsi di bawah Win 7 karena izin keamanan. Jika Anda tidak memiliki D: \, lalu buat direktori "C: \ x" untuk menyelesaikan operasi.

Hasil ini biasanya cukup baik. Namun, ada dua langkah opsional untuk meningkatkan output.

  • (langkah terakhir opsional 1) Pada tahap ini, dokumen ini sangat besar (dokumen saya menggelembung dari 7MB menjadi 80MB), sehingga Anda dapat mengurangi ukuran file dengan menggunakan:
    • "Lanjutan..PDF Optimizer", atau:
    • "Advanced..Preflight" dengan pengaturan "Compatible with Acrobat 5".
  • (langkah akhir opsional 2) Halaman-halaman itu semua ukurannya berbeda. Ulangi pemangkasan di semua halaman, jadi semuanya berukuran seragam.
Contango
sumber
3

Baru saja mengalami masalah yang sama. Saya menemukan briss, alat java GUI open source untuk memisahkan dan memotong halaman pdf:

http://sourceforge.net/projects/briss/

Ini bekerja sangat baik untuk saya, di Linux, meskipun antarmuka pengguna tidak sepenuhnya sepele. Bahkan bekerja dengan pdf dengan beberapa halaman berukuran berbeda!

Matthias
sumber
2

Anda bisa menggandakan dokumen, lalu memotong halaman sehingga hanya nomor halaman genap yang ditampilkan dalam satu file dan hanya nomor halaman ganjil di yang lain. Kemudian bagi file menjadi satu halaman dan gabungkan kembali untuk membuat satu dokumen dengan satu sisi ke satu halaman ...

Anda dapat melakukan ini menggunakan sejumlah metode, misalnya:

  1. Gunakan alat potong Adobe Acrobat untuk memangkas satu sisi halaman ganda, dan menerapkan potongan itu ke semua halaman.
  2. Bagi file ke halaman individual menggunakan perintah 'burst' di pdftoolkit
  3. Ganti nama file berurutan menggunakan alat pengganti nama file (mis. ReNamer )
  4. Rekombinasi halaman-halaman menggunakan perintah 'cat' di pdftoolkit
pelms
sumber
2

Saya menggunakan skrip berikut untuk memproses buku yang dipindai di Mac dan Linux. Ini bisa menjadi sangat intensif memori.

#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder". 
#
# The second step is to take each page of the PDF and split this into two two pages, 
# because each page of the scanned document actually contains two pages of the book.
#
#

FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf

echo "Making a temporary copy of the input file."

cp $1 $FILE

#
# Start cropping
#

echo "Cropping the PDF"

# The first regex removes all boxes but CropBox. The second regex renames the  CropBox as MediaBox

perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE

echo "Validating the PDF"

#Run PDFTK to ensure that the file is OK

cat $FILE | pdftk - output $FILE2

#
# Done cropping, start splitting the pages
#

echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"

convert -density 200  $FILE2 -crop 50%x0 +repage $FILE3

#
# Done spliting, copy the result in a new file
#


mv $FILE3 $1.pages.pdf
mronkko
sumber
1

Terima kasih untuk referensi yang bagus. Saya berada dalam masalah yang sama tetapi ingin berbagi apa yang berhasil untuk saya.

Saya memiliki pdf tabloid berorientasi lanskap dengan teks berorientasi potret hanya sisi kiri. Pada dasarnya tabloid 2-up kehilangan konten apa pun di sisi kanan halaman. Titik awal yang serupa, tetapi tabloid adalah 792 × 1224 (Potret), 1124 x 792 (Lanskap) dan definisi titik untuk tabloid 1/2 yang saya butuhkan adalah 612 x 792 poin.

"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"

Memberi saya konten yang saya butuhkan menjadi potret 8,5 x 11, jauh lebih mudah dibaca.

Charlie
sumber
0

Apa yang saya pahami adalah bahwa file PDF yang menampilkan dua halaman (berdampingan pada satu lembar) perlu dikonversi ke satu halaman per lembar sehingga menghasilkan dua lembar file PDF. Dengan kata lain jika ada total tiga puluh halaman pada 15 lembar, kita perlu mengkonversi file PDF menjadi file PDF sebanyak tiga puluh lembar yang masing-masing memperlihatkan satu halaman. Jika ini masalahnya, saya telah menggunakan Adobe acrobat XI PRO "alat ekstraksi halaman" dengan menentukan nomor halaman dari 1 hingga 30

RN SONI
sumber