Bagaimana saya bisa mengkonversi PDF dengan 2 sisi per halaman ke 1 sisi per halaman?
Bagaimana saya bisa mengkonversi PDF dengan 2 sisi per halaman ke 1 sisi per halaman?
Jawaban:
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?
... 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.
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 >
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 >
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 >
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 >
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
.
@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:
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:
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.
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!
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:
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
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.
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
Krop (Python) & PDFscissors (Java) belum disebutkan, periksa jika Anda memiliki catatan kuliah fe pdfnup-ped yang ingin Anda balikkan kembali ke PDF presentasi yang tepat.