Saya punya banyak file PDF yang berisi dua halaman "asli" untuk satu halaman PDF; Saya ingin memotong ini menjadi dua dan menempatkan masing-masing setengah pada halaman terpisah. Pada dasarnya, saya butuh sesuatu yang melakukan kebalikan dari pdfnup
(atau psnup
). Bagaimana hal ini bisa dicapai?
Platform adalah Linux, open source lebih disukai; karena saya punya banyak tumpukan ini untuk melakukan sesuatu yang dapat dituliskan (sebagai lawan GUI) akan menyenangkan, jadi saya bisa memberikan daftar mereka dan mengunyahnya.
Skrip yang sudah ada sebelumnya bukan satu-satunya pilihan; jika ada kode sampel untuk memanipulasi PDF dengan cara yang mirip dengan perpustakaan pihak ketiga, saya mungkin bisa meretasnya untuk melakukan apa yang saya inginkan.
sumber
Jawaban:
Anda dapat menyelesaikan ini dengan bantuan Ghostscript.
pdftk
sendiri 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 jawabannya untuk kasus ini di sini .
Kasing Anda bahkan lebih sederhana. Anda sepertinya memiliki sesuatu yang mirip dengan ini:
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:
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:
Tahap kedua
Selanjutnya, bagian yang tepat:
Perhatikan offset negatif karena kami menggeser halaman ke kiri sambil menjaga area tampilan tetap.
Hasil:
Langkah terakhir
Sekarang kita menggabungkan halaman menjadi satu file. Kita bisa melakukannya dengan ghostscript juga, tetapi kita akan menggunakannya
pdftk
sebagai gantinya, karena lebih cepat untuk pekerjaan ini:Selesai Inilah hasil yang diinginkan. 4 halaman berbeda, berukuran 421x595 pt.
Hasil:
sumber
421
->-421
). ;-)Ada alat pdfposter yang dapat digunakan untuk membuat PDF dengan beberapa halaman untuk satu halaman input (ubin atau memotong halaman). Ini mirip dengan alat
poster
, yang melakukan hal yang sama untuk file PostScript.sumber
Jadi, setelah pencarian yang lebih banyak (tampaknya "halaman memotong PDF" adalah pencarian yang jauh lebih baik), saya menemukan skrip kecil yang disebut
unpnup
yang menggunakanposter
, konversi PDF / PS, danpdftk
untuk melakukan apa yang saya butuhkan. Ini agak jauh, tetapi jauh lebih unggul daripada metode lain yang saya temukan (seperti menggunakan imagemagick) karena tidak merasterisasi halaman sebelum meludahkannya.Kalau-kalau mobileread hilang karena suatu alasan, inti skrip (dilisensikan di bawah GPLv2 atau yang lebih baru oleh Harald Hackenberg
<hackenberggmx.at>
) adalah sebagai berikut:sumber
PDF => EPS => PDF
rute yang berisiko dan menempuhPDF => PDF => PDF
jalan yang lebih aman .Saya menemukan jawaban oleh Kurt Pfeifle sangat membantu untuk situasi saya yang serupa. Saya pikir saya mungkin berbagi modifikasi solusi saya dengan yang lain ...
Saya juga memiliki pindaian PDF yang memiliki 2 halaman di setiap lembar. Itu adalah scan 11 x 8,5 (inci) dari buklet yang dijahit pelana yang dibiarkan dijepit ketika awalnya dipindai, jadi: PDF halaman 1 = sampul belakang dan depan; Halaman PDF 2 = halaman 2 dan 3, dll. Ini berbunyi di layar baik tetapi Anda tidak dapat mencetaknya dan kemudian menjepretnya untuk membuat lebih banyak salinan buklet.
Saya harus bisa mencetak ini pada mesin fotokopi duplex; yaitu mengubahnya KEMBALI ke PDF "dipaksakan", siap untuk dicetak. Jadi dengan menggunakan solusi Kurt, saya membuat (ahem) ini "satu baris" untuk mengubahnya kembali menjadi setengah halaman, dalam urutan halaman yang benar lagi. Ini akan bekerja untuk semua HEIGHT dan WIDTH, dan juga untuk sejumlah halaman. Dalam kasus saya, saya memiliki buklet 40 halaman (20 halaman yang dipindai dalam PDF.)
Anda hanya perlu mengubah beberapa parameter pertama dalam perintah ini untuk menentukan HEIGHT dan WIDTH dan ORIG_FILE_PATH. Sisa dari perintah menghitung berbagai ukuran dan memanggil gs dua kali, lalu pdftk. Bahkan akan menghitung halaman dalam pemindaian Anda dan kemudian menghasilkan spesifikasi sortir yang benar (untuk skenario yang saya berikan).
Ini menampilkan beberapa kemajuan tentang apa yang dilakukannya, yang akan terlihat seperti ini:
Selanjutnya, untuk mendapatkan pembebanan halaman yang Anda butuhkan untuk buklet tercetak, Anda cukup "mencetak" dipesan. "tool (dalam kasus saya, saya menggunakan Booklet Buat Christoph Vogelbusch untuk Mac dari http://download.cnet.com/Create-Booklet/3000-2088_4-86349.html ).
PDF yang dihasilkan sekarang akan kembali ke ukuran halaman asli 11 x 8,5 dengan 2 halaman per lembar, tetapi pemesanan akan sedemikian rupa sehingga Anda dapat mencetaknya dua sisi, penjilidan tepi pendek, dan voila! Anda akan memiliki hasil cetak yang dapat Anda fotokopi dan lipat dan sadel-menjahit, mereproduksi buklet asli tanpa pernah membongkar (atau bahkan harus melihat) yang asli.
Semoga ini bisa membantu seseorang!
-c
sumber
Berdasarkan jawaban piptas di atas:
Di windows, untuk memisahkan PDF ukuran-huruf dengan gambar sampul tunggal di awal, berikut ini bekerja sangat baik untuk saya (perhatikan penggunaan [-612 0] pada langkah kedua, nilai positif membuat halaman kosong karena mendorong cara yang salah .)
gswin32c -o left-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Perhatikan penggunaan
-dFirstPage=2
yang memerintahkan gs untuk mulai memproses pada halaman 2.gswin32c -o right-sections.pdf -sDEVICE=pdfwrite -dFirstPage=2 -g6120x7920 -c "<</PageOffset [-612 0]>> setpagedevice" -f input.pdf
Ini menciptakan bagian-kanan.pdf dengan cara yang sama. Dan sekarang gambar sampul:
gswin32c -o cover.pdf -sDEVICE=pdfwrite -dLastPage=1 -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f input.pdf
Selanjutnya, karena saya tidak ingin bergabung dengan pdftk menggunakan input halaman manual, saya membagi bagian kiri dan kanan menjadi PDF terpisah di direktori baru.
Lalu saya bergabung dengan PDF di direktori itu, secara alfabet (dan untungnya itu berarti mereka diurutkan dalam urutan yang benar!) Dan saya juga menjalankan hasilnya melalui ghostscript lagi untuk memperbaiki "Peringatan: Nomor generasi di luar kisaran 0,65535, dengan asumsi 0. " kesalahan yang dihasilkan oleh pdftk yang ghostscript disebut "itext-paulo-155 (itextpdf.sf.net-lawagie.com)" - itu juga terjadi memotong ukuran file menjadi setengah dalam penggunaan saya. Dengan aslinya 4,5MB, hasil pdftk adalah 6,7MB dan pemrosesan ulang gswin32c menguranginya menjadi 3,2 MB.
Dan kita selesai! Jangan ragu untuk menghapus folder input_file, cover.pdf, input_temp.pdf, right_sections.pdf dan left_sections.pdf. ;-)
sumber
jika Anda hanya perlu menampilkan pdf sisi kiri semua dalam satu dokumen, dan pdf sisi kanan semua dalam satu dokumen, maka skrip berikut berdasarkan jawaban Kurt Pfeifle akan melakukan trik (berfungsi untuk ketinggian berapa pun dan lebar):
kemudian jalankan seperti ini:
sumber