Gunakan konversi untuk mengambil halaman tertentu dari file PDF?


21

Saya tahu saya pernah melakukan ini sebelumnya, jadi saya yakin itu mungkin, saya hanya lupa bagaimana melakukannya. Ada cara untuk memberitahu konversi untuk mengambil halaman tertentu dari PDF, dan saya ingin menyimpan format halaman itu sebagai PDF.

Jawaban:


24

ImageMagick adalah alat untuk gambar bitmap, yang sebagian besar PDF tidak. Jika Anda menggunakannya, itu akan meraster data, yang seringkali tidak diinginkan.

Pdftk dapat mengekstraksi satu atau lebih halaman dari file PDF.

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

Jika Anda memiliki instalasi LaTeX dengan PDFLaTeX, Anda dapat menggunakan halaman pdf . Ada bungkus shell untuk pdfpages, pdfjam .

pdfjam -o pages_42_43.pdf input.pdf 42,43

Kemungkinan lain (berlebihan di sini, tetapi berguna untuk persyaratan yang lebih kompleks dari satu halaman) adalah Python dengan perpustakaan PyPdf .

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

Saya akan merekomendasikan pdftkjuga. Anda akan ingin menggunakannya.
Sebastian

pdfjamberfungsi seperti jimat, dan sudah diinstal dengan distribusi LaTeX saya. Sangat mudah digunakan.
hdl

Terima kasih banyak. Halaman yang diekstraksi lebih besar dari pdf lengkap dengan pdftksehingga tampaknya tidak hanya mengekstrak halaman. Hasilnya baik-baik saja sebaliknya.
Eric Duminil

25

Anda dapat menggunakan notasi subskrip dengan convert(1)untuk "mengindeks" ke dalam PDF:

$ convert source.pdf[1] dest.pdf 

Nilai indeks tergantung pada bagaimana eksportir PDF memberi nomor halaman. Dalam pengujian pada file di sini, angka-angka tersebut tampaknya berbasis nol, jadi contoh di atas memberi Anda halaman kedua dalam dokumen. Saya telah melihat contoh online di mana mereka menunjukkan indeks huruf sebagai gantinya, karena ternyata pencipta PDF "menomori" halaman dalam dokumen itu sebagai gantinya.

Sayangnya, ini tidak memberikan hasil yang sangat baik, karena ImageMagick mengasumsikan semuanya berbasis pixel, dan karenanya merasterisasi citra vektor, seperti tipografi pada PDF biasa.

Alat yang lebih baik untuk pekerjaan itu adalah Ghostscript , yang mungkin sudah Anda instal:

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

Ini melewati data PDF melalui tidak berubah, karena Ghostscript memahami PDF (turunan PostScript) ke tingkat yang jauh lebih dalam daripada ImageMagick.


2
sebenarnya itu tidak benar tentang imagemagick, jika Anda mengatur parameter -density menjadi sekitar 300-400 maka teks yang dihasilkan dari pdf di png akan terlihat baik-baik saja.
buggedcom

2
Ini akan terlihat bagus di layar, tentu, tetapi jika Anda kemudian pergi untuk mencetak, Anda ingin mengatur kerapatan yang lebih tinggi. Dan kemudian, Anda kemungkinan akan mengalami masalah dengan bagaimana RIP printer Anda mengatasi keluaran piksel antialiasing abu-abu oleh ImageMagick. Jadi, Anda kemudian dapat memilih untuk output ke B&W 1-bit pada resolusi asli printer Anda, yang mungkin 1.200 dpi, atau 1.440 dpi atau yang lainnya, dan Anda harus tahu itu terlebih dahulu untuk mendapatkan output yang tajam. Tidak, saya akan mendukung pernyataan saya: paling baik menyimpan data PDF dalam bentuk vektor selama mungkin.
Warren Young

@bcomcom saya temukan -density 300adalah sweet spot. Apa pun yang lebih besar dan Anda membuat file temp besar - yang mungkin akan Anda ubah ukurannya menjadi thumbnail
Mike Causer

2
Anda juga dapat memilih rentang halaman (misalnya untuk membuat gif) seperti begitusource.pdf[3-6]
texasflood
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.