Ekstrak halaman pertama dari banyak pdf

17

Sudah punya sekitar 500 PDF untuk dilihat dan mengekstrak halaman pertama. Mereka kemudian harus melalui beberapa proses konversi yang memakan waktu jadi berharap untuk mencoba dan menghemat waktu dengan memiliki proses batch untuk mengekstrak hanya halaman pertama dari 500 pdf dan menempatkannya dalam pdf baru. Telah menyodok Acrobat tetapi tidak dapat menemukan metode nyata untuk melakukan ini untuk banyak file. Adakah yang tahu program atau metode lain yang bisa dicapai ini? Sumber gratis dan terbuka jelas lebih menguntungkan :)

EDIT: Sebenarnya telah berhasil menggunakan GhostScript untuk mengekstrak hanya satu halaman. Sekarang saya sedang mencari cara untuk mengelompokkannya dan mengambil daftar file dan menggunakannya.

Tim Alexander
sumber
Apa langkah-langkah lain dalam proses konversi melibatkan?
Ignacio Vazquez-Abrams
Tentang hasil edit Anda, lihat edit saya .
frabjous

Jawaban:

29

Menggunakan pdftk ...

Di mac dan linux dari command-line.

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

Di Windows, Anda bisa membuat file batch. Buka Notepad, rekatkan ini di dalam:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

Anda mungkin perlu mengganti "pdftk.exe" dengan path lengkap ke pdftk, misalnya, "C:\Program Files\pdftk\pdftk.exeatau apa pun itu. (Saya tidak menggunakan Windows jadi saya tidak tahu.)

Simpan dengan ekstensi yang berakhiran .bat, letakkan di folder dengan PDF dan klik dua kali.

Anda dapat melakukan hal yang sama dengan Ghostscript, ya.

Ayo lihat. Untuk Mac dan Linux (semua satu baris):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

Saya tidak yakin apa perintah yang sesuai untuk file batch Windows. Tebakan terbaik saya (- Saya tidak punya windows jadi saya tidak bisa menguji -):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

Periksa jalur ke eksekusi skrip hantu Anda benar, dan well, saya belum menguji ini karena saya tidak menggunakan Windows.


EDIT: OK, saya baru sadar Anda mungkin tidak ingin 500 1 halaman PDF, tetapi satu PDF yang menggabungkan semuanya. Jalankan saja di atas, dan itu akan memberi Anda 500 PDF 1 halaman. Untuk menggabungkannya menggunakan pdftk ... di mac dan linux:

pdftk *-page1.pdf cat output combined.pdf

Saya pikir itu mungkin sama pada Windows, kecuali mungkin memerlukan path lengkap ke pdftk, seperti di atas. Anda bisa menambahkan baris itu setelah baris di atas dalam file batch Anda.

Dengan Ghostscript ... di mac dan linux:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

Dan itu mungkin sama pada Windows, kecuali mengganti "gs" di awal dengan path lengkap ke gswin32c.exe, seperti di atas.

Mungkin ada cara ghostscript untuk melakukan keduanya dalam satu langkah, tapi aku terlalu malas untuk mengetahuinya sekarang.

Jika urutan penggabungannya penting, maka kami akan memerlukan informasi lebih lanjut.

luar biasa
sumber
itulah perintah yang saya cari. telah menghabiskan sore membaca tentang jika loop di linux! Perintah awal Anda adalah yang benar, yaitu saya perlu 500 pdf satu halaman. Sudah berhasil mendapatkan semua halaman pertama ke dalam satu pdf tetapi konversi ke excel kemudian membuatnya tidak terkelola. Pengguna saya memiliki beberapa permintaan dan tata letak persyaratan yang sangat spesifik yang menyebalkan tapi menantang. terima kasih atas bantuannya !!
Tim Alexander
2

Baru saja melakukannya hari ini di Linux. Ini juga bisa digunakan untuk Mac. Jalankan perintah berikut dari terminal Anda.

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr mengirimkan pekerjaan ke printer.

Perhatikan penggunaan * karakter dalam perintah. Ini akan menjalankan perintah untuk semua file PDF Anda di direktori.

vivek_ganesan
sumber
Seperti yang Anda tunjukkan, ini akan mengirimkan pekerjaan ke printer. Bukan itu yang diminta OP.
Nick K9
1

Saya pikir Anda bisa menggunakan printer virtual pdf, seperti pdf-forge.

Anda hanya "mencetak" halaman pertama, saya di mac sekarang dan tidak bisa mencobanya tetapi saya cukup yakin Anda bisa melakukannya lebih dari itu satu per satu.

Semoga berhasil!!

Trufa

Trufa
sumber
terima kasih atas petunjuknya. ini telah mengarahkan saya ke GhostScript yang sepertinya dapat melakukan apa yang saya inginkan. Terima kasih
Tim Alexander
@Tim Alexander, tidak ada masalah sama sekali !!
Trufa
0

adapun perintah file batch windows (.bat) (%% untuk variabel dalam file bat)

ekstraksi halaman pertama pdf sebagai jpg dengan resolusi / ukuran berkurang

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(dalam posting di atas sOutputFile ditulis salah .. dan dengan jalur saat ini menginstal standar gs x86)

(lihat juga Menggunakan Ghostscript untuk mengonversi multi-halaman PDF menjadi JPG tunggal? )

ebricca
sumber
0

Di Linux

Saya menulis baris perintah ini

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

Tapi itu berfungsi, saya mengujinya, juga berfungsi dengan banyak level folder yang Anda miliki. Pastikan Anda menjalankannya sebagai root dari struktur folder. Setiap folder akan memiliki untuk setiap file pdf pdf tambahan yang berakhir dengan.firstpage.pdf

Anda perlu pdftkdan treeuntuk ini dan di Ubuntu Linux Anda dapat menginstalnya dengan apt:

sudo apt install pdftk tree
Eduard Florinescu
sumber
0

Atau gunakan cpdf https://www.coherentpdf.com/ocaml-libraries.html :

cpdf -merge in1.pdf [<range>] in2.pdf [<range>] [<more names/ranges>]
     [-retain-numbering] [-remove-duplicate-fonts] -o out.pdf

cpdf -merge a.pdf 1 b.pdf 1 -o out.pdf
Jerry T
sumber