Saltar al contenido

Dividir PDF en documentos con varias páginas cada uno

Ya no necesitas indagar más por todo internet porque estás al lugar exacto, contamos con la solución que necesitas sin complicarte.

Solución:

pdftk es capaz de recortar un conjunto fijo de páginas de manera eficiente. Con un poco de pegamento para secuencias de comandos, esto hace lo que quiero:

number=$(pdfinfo -- "$file" 2> /dev/null | awk '$1 == "Pages:" print $2')
count=$((number / pagesper))
filename=$file%.pdf

counter=0
while [ "$count" -gt "$counter" ]; do 
  start=$((counter*pagesper + 1));
  end=$((start + pagesper - 1));

  counterstring=$(printf %04d "$counter")
  pdftk "$file" cat "$start-$end" output "$filename_$counterstring.pdf"

  counter=$((counter + 1))
done

Esto supone que tiene el número de páginas por fragmento en $pagesper y el nombre de archivo del PDF de origen en $file.

Si usted tiene acroread instalado, también puede utilizar

acroread -size a4 -start "$start" -end "$end" -pairs "$file" "$filename_$counterstring.ps"

acroread ofrece la opción -toPostScript que puede ser útil.

Ver también pdfseparate y pdfunite desde poppler-utils. pdfseparate divide el archivo en un archivo por página, lo que lo hace relativamente fácil de volver a ensamblar a voluntad más adelante con pdfunitemanualmente o (semi-)automáticamente.

Como con zsh:

autoload zargs

reunite() pdfunite "[email protected]" file-$1-$argv[-1].pdf

pdfseparate file.pdf p%d
zargs -n 5 p<->(n) -- reunite
rm -f p<->

se dividiría file.pdf en file-p1-p5.pdf, file-p6-p10.pdf

Pienso que Python con la biblioteca PyPdf es conveniente para aquellos trabajos que pdftk no hace convenientemente (o en absoluto).

#!/usr/bin/env python
import sys
from pyPdf import PdfFileWriter, PdfFileReader

# Command line parsing
if len(sys.argv) < 2 or sys.argv[1][-4:] != '.pdf':
    sys.stderr.writeln('Usage: ' + sys.argv[0] + ''' FILE.pdf N
Split FILE.pdf into chunks of N pages each.''')
    exit(3)
pages_per_file = int(sys.argv[2])

base_name = sys.argv[1][:-4] + '-'
input_pdf = PdfFileReader(open(sys.argv[1]))
output_pdf = PdfFileWriter()
num_pages = input_pdf.getNumPages()
for i in xrange(num_pages):
    output_pdf.addPage(input_pdf.getPage(i))
    if (i + 1) % pages_per_file == 0 or i + 1 == num_pages:
        output_file = open(base_name + str(i / pages_per_file + 1) + '.pdf', "wb")
        output_pdf.write(output_file)
        output_file.close()
        output_pdf = PdfFileWriter()

Aquí puedes ver las comentarios y valoraciones de los lectores

Puedes añadir valor a nuestra información dando tu experiencia en los informes.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *