¿Cómo puedo extraer un rango de página / una parte de un PDF?

306

¿Tiene alguna idea de cómo extraer una parte de un documento PDF y guardarlo como PDF? En OS X es absolutamente trivial al usar Preview. Probé el editor de PDF y otros programas, pero fue en vano.

Me gustaría un programa en el que seleccione la parte que quiero y luego la guarde como PDF con un comando simple como CMD + N en OS X. Quiero la parte extraída que se guardará en formato PDF y no jpeg, etc.

    
pregunta user72469 26.11.2012 - 03:06

14 respuestas

346

pdftk es una herramienta útil multiplataforma para el trabajo ( pdftk homepage )

pdftk full-pdf.pdf cat 12-15 output outfile_p12-15.pdf

pasa el nombre de archivo del pdf principal, luego le dice que incluya solo ciertas páginas (12-15 en este ejemplo) y lo envíe a un nuevo archivo.

    
respondido por el Martin H 17.04.2013 - 17:21
194

Muy simple, use el lector de PDF predeterminado:

imprimir como archivo. ¡eso es!

luego

    
respondido por el Abdennour TOUMI 14.11.2013 - 11:25
62

Rango de página - Script de Nautilus

Descripción general

Creé un script ligeramente más avanzado basado en el tutorial @ThiagoPonte vinculado a. Sus características principales son

  • que está basado en GUI,
  • compatible con espacios en nombres de archivo,
  • y basado en tres backends diferentes que son capaces de preservar todos los atributos del archivo original

Captura de pantalla

Código

#!/bin/bash
#
# TITLE:        PDFextract
#
# AUTHOR:       (c) 2013-2015 Glutanimate (https://github.com/Glutanimate)
#
# VERSION:      0.2
#
# LICENSE:      GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# 
# OVERVIEW:     PDFextract is a simple PDF extraction script based on Ghostscript/qpdf/cpdf.
#               It provides a simple way to extract a page range from a PDF document and is meant
#               to be used as a file manager script/addon (e.g. Nautilus script).
#
# FEATURES:     - simple GUI based on YAD, an advanced Zenity fork.
#               - preserves _all_ attributes of your original PDF file and does not compress 
#                 embedded images further than they are.      
#               - can choose from three different backends: ghostscript, qpdf, cpdf
#
# DEPENDENCIES: ghostscript/qpdf/cpdf poppler-utils yad libnotify-bin
#                         
#               You need to install at least one of the three backends supported by this script.
#
#               - ghostscript, qpdf, poppler-utils, and libnotify-bin are available via 
#                 the standard Ubuntu repositories
#               - cpdf is a commercial CLI PDF toolkit that is free for personal use.
#                 It can be downloaded here: https://github.com/coherentgraphics/cpdf-binaries
#               - yad can be installed from the webupd8 PPA with the following command:
#                 sudo add-apt-repository ppa:webupd8team/y-ppa-manager && apt-get update && apt-get install yad
#
# NOTES:        Here is a quick comparison of the advantages and disadvantages of each backend:
#
#                               speed     metadata preservation     content preservation        license
#               ghostscript:     --               ++                         ++               open-source
#               cpdf:             -               ++                         ++               proprietary
#               qpdf:            ++                +                         ++               open-source
#
#               Results might vary depending on the document and the version of the tool in question.
#
# INSTALLATION: https://askubuntu.com/a/236415
#
# This script was inspired by Kurt Pfeifle's PDF extraction script 
# (http://www.linuxjournal.com/content/tech-tip-extract-pages-pdf)
#
# Originally posted on askubuntu
# (https://askubuntu.com/a/282453)

# Variables

DOCUMENT=""
BACKENDSELECTION="^qpdf!ghostscript!cpdf"

# Functions

check_input(){
  if [[ -z "" ]]; then
    notify "Error: No input file selected."
    exit 1
  elif [[ ! "$(file -ib "")" == *application/pdf* ]]; then
    notify "Error: Not a valid PDF file."
    exit 1
  fi
}

check_deps () {
  for i in "$@"; do
    type "$i" > /dev/null 2>&1 
    if [[ "$?" != "0" ]]; then
      MissingDeps+="$i"
    fi
  done
}

ghostscriptextract(){
  gs -dFirstPage="$STARTPAGE "-dLastPage="$STOPPAGE" -sOutputFile="$OUTFILE" -dSAFER -dNOPAUSE -dBATCH -dPDFSETTING=/default -sDEVICE=pdfwrite -dCompressFonts=true -c \
  ".setpdfwrite << /EncodeColorImages true /DownsampleMonoImages false /SubsetFonts true /ASCII85EncodePages false /DefaultRenderingIntent /Default /ColorConversionStrategy \
  /LeaveColorUnchanged /MonoImageDownsampleThreshold 1.5 /ColorACSImageDict << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /GrayACSImageDict \
  << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /PreserveOverprintSettings false /MonoImageResolution 300 /MonoImageFilter /FlateEncode \
  /GrayImageResolution 300 /LockDistillerParams false /EncodeGrayImages true /MaxSubsetPCT 100 /GrayImageDict << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor \
  0.4 /Blend 1 >> /ColorImageFilter /FlateEncode /EmbedAllFonts true /UCRandBGInfo /Remove /AutoRotatePages /PageByPage /ColorImageResolution 300 /ColorImageDict << \
  /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /CompatibilityLevel 1.7 /EncodeMonoImages true /GrayImageDownsampleThreshold 1.5 \
  /AutoFilterGrayImages false /GrayImageFilter /FlateEncode /DownsampleGrayImages false /AutoFilterColorImages false /DownsampleColorImages false /CompressPages true \
  /ColorImageDownsampleThreshold 1.5 /PreserveHalftoneInfo false >> setdistillerparams" -f "$DOCUMENT"
}

cpdfextract(){
  cpdf "$DOCUMENT" "$STARTPAGE-$STOPPAGE" -o "$OUTFILE"
}

qpdfextract(){
  qpdf --linearize "$DOCUMENT" --pages "$DOCUMENT" "$STARTPAGE-$STOPPAGE" -- "$OUTFILE"
  echo "$OUTFILE"
  return 0 # even benign qpdf warnings produce error codes, so we suppress them
}

notify(){
  echo ""
  notify-send -i application-pdf "PDFextract" ""
}

dialog_warning(){
  echo ""
  yad --center --image dialog-warning \
  --title "PDFExtract Warning" \
  --text "" \
  --button="Try again:0" \
  --button="Exit:1"

  [[ "$?" != "0" ]] && exit 0
}

dialog_settings(){
  PAGECOUNT=$(pdfinfo "$DOCUMENT" | grep Pages | sed 's/[^0-9]*//') #determine page count

  SETTINGS=($(\
      yad --form --width 300 --center \
          --window-icon application-pdf --image application-pdf \
          --separator=" " --title="PDFextract"\
          --text "Please choose the page range and backend"\
          --field="Start:NUM" 1[!1..$PAGECOUNT[!1]] --field="End:NUM" $PAGECOUNT[!1..$PAGECOUNT[!1]] \
          --field="Backend":CB "$BACKENDSELECTION" \
          --button="gtk-ok:0" --button="gtk-cancel:1"\
      ))

  SETTINGSRET="$?"

  [[ "$SETTINGSRET" != "0" ]] && exit 1

  STARTPAGE=$(printf %.0f ${SETTINGS[0]}) #round numbers and store array in variables
  STOPPAGE=$(printf %.0f ${SETTINGS[1]})
  BACKEND="${SETTINGS[2]}"
  EXTRACTOR="${BACKEND}extract"

  check_deps "$BACKEND"

  if [[ -n "$MissingDeps" ]]; then
    dialog_warning "Error, missing dependency: $MissingDeps"
    unset MissingDeps
    dialog_settings
    return
  fi

  if [[ "$STARTPAGE" -gt "$STOPPAGE" ]]; then 
    dialog_warning "<b>   Start page higher than stop page.   </b>"
    dialog_settings
    return
  fi

  OUTFILE="${DOCUMENT%.pdf} (p${STARTPAGE}-p${STOPPAGE}).pdf"
}

extract_pages(){
  $EXTRACTOR
  EXTRACTORRET="$?"
  if [[ "$EXTRACTORRET" = "0" ]]; then
    notify "Pages $STARTPAGE to $STOPPAGE succesfully extracted."
  else
    notify "There has been an error. Please check the CLI output."
  fi
}


# Main

check_input ""
dialog_settings
extract_pages

Instalación

Siga las instrucciones de instalación genéricas para las secuencias de comandos de Nautilus . Asegúrese de leer cuidadosamente el encabezado del script, ya que ayudará a aclarar la instalación y el uso del script.

Páginas parciales - Shuffler de PDF

Descripción general

  

PDF-Shuffler es una pequeña aplicación python-gtk, que ayuda al usuario a fusionar o dividir documentos en formato pdf y rotar, recortar y reorganizar sus páginas mediante una interfaz gráfica interactiva e intuitiva. Es una interfaz para python-pyPdf.

Instalación

sudo apt-get install pdfshuffler

Uso

PDF-Shuffler puede recortar y eliminar páginas de PDF individuales. Puede usarlo para extraer un rango de páginas de un documento o incluso páginas parciales mediante la función de recorte:

Elementos de página - Inkscape

Descripción general

Inkscape es un editor de gráficos vectoriales de código abierto muy poderoso. Admite una amplia gama de formatos diferentes, incluidos archivos PDF. Puede usarlo para extraer, modificar y guardar elementos de página de un archivo PDF.

Instalación

sudo apt-get install inkscape

Uso

1.) Abra el archivo PDF de su elección con Inkscape. Aparecerá un cuadro de diálogo de importación. Elija la página de la que desea extraer los elementos. Deje las otras configuraciones como están:

2). En Inkscape, haga clic y arrastre para seleccionar los elementos que desea extraer:

3.) invierta la selección con ! y elimine el objeto seleccionado con DELETE :

4.) Recorta el documento en los objetos restantes accediendo al cuadro de diálogo Document Properties con CTRL + SHIFT + D y seleccionando "ajustar documento a la imagen":

5) Guarde el documento como un archivo PDF desde File - & gt; Guardar como diálogo:

6.) Si hay imágenes de mapa de bits / imágenes de mapa de bits en su documento recortado, puede configurar su DPI en el cuadro de diálogo que aparece a continuación:

7.) Si siguió todos los pasos, habrá producido un archivo PDF verdadero que solo consta de los objetos que usted elija:

    
respondido por el Glutanimate 17.04.2013 - 17:11
31

Guarde esto como un script de shell, como pdfextractor.sh:

#!/bin/bash
# this function uses 3 arguments:
#      is the first page of the range to extract
#      is the last page of the range to extract
#      is the input file
#     output file will be named "inputfile_pXX-pYY.pdf"
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
   -dFirstPage= \
   -dLastPage= \
   -sOutputFile=${3%.pdf}_p-p.pdf \
   

Para ejecutar tipo:

./pdfextractor.sh 4 20 myfile.pdf

1) 4 se refiere a la página donde comenzará el nuevo pdf.

2) 20 se refiere a la página con la que terminará el pdf.

3) myfile.pdf es el archivo pdf que desea extraer partes.

El resultado sería myfile_p4_p20.pdf en el mismo directorio que el archivo pdf original.

Todo esto y más información aquí: Tech Sugerencia

    
respondido por el ThiagoPonte 16.04.2013 - 19:40
26

QPDF es genial. Úselo de esta manera para extraer las páginas 1-10 de input.pdf y guárdelo como output.pdf .

qpdf --pages input.pdf 1-10 -- input.pdf output.pdf

Tenga en cuenta que input.pdf se escribe dos veces.

Puedes instalarlo invocando:

apt-get install qpdf

O, yendo al directorio de aplicaciones de Ubuntu:

Es una gran herramienta para la manipulación de PDF, que es muy rápida, tiene muy pocas dependencias. "Puede cifrar y linealizar archivos, exponer las partes internas de un archivo PDF y realizar muchas otras operaciones útiles para los usuarios finales y los desarrolladores de PDF".

enlace

    
respondido por el Ho1 09.09.2015 - 09:10
20

Hay una utilidad de línea de comandos llamada pdfseparate .

De los documentos:

pdfseparate sample.pdf sample-%d.pdf

extracts  all pages from sample.pdf, if i.e. sample.pdf has 3 pages, it
   produces

sample-1.pdf, sample-2.pdf, sample-3.pdf

O, para seleccionar una sola página (en este caso, la primera página) del archivo sample.pdf:

pdfseparate -f 1 -l 1 sample.pdf sample-1.pdf
    
respondido por el jdmcbr 29.10.2014 - 19:17
17

pdftk ( sudo apt-get install pdftk ) es una gran línea de comandos también para la manipulación de PDF. Estos son algunos ejemplos de lo que pdftk puede hacer:

   Collate scanned pages
     pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdf
     or if odd.pdf is in reverse order:
     pdftk A=even.pdf B=odd.pdf shuffle A Bend-1 output collated.pdf

   Join in1.pdf and in2.pdf into a new PDF, out1.pdf
     pdftk in1.pdf in2.pdf cat output out1.pdf
     or (using handles):
     pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf
     or (using wildcards):
     pdftk *.pdf cat output combined.pdf

   Remove page 13 from in1.pdf to create out1.pdf
     pdftk in.pdf cat 1-12 14-end output out1.pdf
     or:
     pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf

   Burst a single PDF document into pages and dump its data to
   doc_data.txt
     pdftk in.pdf burst

   Rotate the first PDF page to 90 degrees clockwise
     pdftk in.pdf cat 1east 2-end output out.pdf

   Rotate an entire PDF document to 180 degrees
     pdftk in.pdf cat 1-endsouth output out.pdf

En tu caso, yo haría:

     pdftk A=input.pdf cat A<page_range> output output.pdf
    
respondido por el Andrzej Pronobis 29.10.2014 - 19:23
10

En cualquier sistema en el que esté instalada una distribución de TeX:

pdfjam <input file> <page ranges> -o <output file>

Por ejemplo:

pdfjam original.pdf 5-10 -o out.pdf

Ver enlace

    
respondido por el Ioannis Filippidis 01.09.2017 - 22:18
6

¿Has probado PDF Mod?

Puede, por ejemplo, extraer páginas y guardarlas como PDF.

Descripción:

PDF Mod es una herramienta sencilla para modificar documentos PDF. Puede rotar, extraer, eliminar y reordenar páginas mediante arrastrar y soltar. Se pueden combinar varios documentos a través de arrastrar y soltar. También puede editar el título, el tema, el autor y las palabras clave de un PDF | documento utilizando PDF Mod.

Espero que esto sea útil.

Regars.

    
respondido por el Roman Raguet 26.11.2012 - 03:17
6

Estaba tratando de hacer lo mismo. Todo lo que tienes que hacer es:

  1. install pdftk :

    sudo apt-get install pdftk
    
  2. si desea extraer páginas aleatorias:

    pdftk myoldfile.pdf cat 1 2 4 5 output mynewfile.pdf
    
  3. si quieres extraer un rango:

    pdftk myoldfile.pdf cat 1-2 4-5 output mynewfile.pdf
    

Compruebe la fuente para obtener más información. .

    
respondido por el theCode 03.05.2016 - 06:00
5

Resulta que puedo hacerlo con imagemagick . Si no lo tiene, instale simplemente con:

sudo apt-get install imagemagick

Nota 1 : Lo he intentado con un pdf de una página (estoy aprendiendo a usar imagemagick , así que no quería más problemas de los necesarios). No sé si / cómo funcionará con varias páginas, pero puede extraer una página de interés con pdftk :

pdftk A=myfile.pdf cat A1 output page1.pdf

donde indica el número de página que se dividirá (en el ejemplo anterior, A1 selecciona la primera página).

Nota 2 : La imagen resultante utilizando este procedimiento será un ráster.

Abra el pdf con el comando display , que es parte del conjunto imagemagick :

display file.pdf

El mío se veía así:


Haga clic en la imagen para ver una versión de resolución completa

Ahora haz clic en la ventana y aparecerá un menú a un lado. Allí, selecciona Transformar | Recortar .

Detrás en la ventana principal, puede seleccionar el área que desea recortar simplemente arrastrando el puntero (selección clásica de esquina a esquina).


Observe el puntero en forma de mano alrededor de la imagen mientras selecciona

Esta selección puede refinarse antes de continuar con el siguiente paso.

Una vez que haya terminado, observe el pequeño rectángulo que aparece en la esquina superior izquierda (vea la imagen de arriba). Muestra las dimensiones del área seleccionada primero (por ejemplo, 281x218 ) y en segundo lugar las coordenadas de la primera esquina (por ejemplo, +256+215 ).

Escriba las dimensiones del área seleccionada; lo necesitará en el momento de guardar la imagen recortada.

Ahora, de vuelta al menú emergente (que ahora es el menú específico "recortar"), haga clic en el botón Recortar .

Finalmente, una vez que esté satisfecho con los resultados del recorte, haga clic en el menú Archivo | Guardar

Navegue a la carpeta donde desea guardar el pdf recortado, escriba un nombre, haga clic en el botón Formato , en la ventana "Seleccionar tipo de formato de imagen", seleccione PDF y haz clic en el botón Seleccionar . De vuelta en la ventana "Buscar y seleccionar un archivo", haga clic en el botón Guardar .

Antes de guardar, imagemagick pedirá "seleccionar geometría de página". Aquí, escriba las dimensiones de su imagen recortada, usando una letra simple "x" para separar el ancho y la altura.

Ahora, puedes hacer todo esto perfectamente desde la línea de comando (el comando es convert con la opción -crop ) - seguramente es más rápido, pero deberías saber de antemano las coordenadas de la imagen que deseas extraer . Marque man convert y un ejemplo en su página web .

    
respondido por el carnendil 19.04.2013 - 02:54
2

PDF Split and Merge es bastante útil para esta y otras operaciones de manipulación de PDF.

Descárguelo de aquí

    
respondido por el To Do 01.06.2013 - 12:45
0

Si desea extraer de sus archivos PDF, puede usar enlace . Es una herramienta increíble para extraer notas, destacados e imágenes de archivos PDF. También puede ver tutoriales en Youtube escribiendo sumnotes .

¡Espero que lo disfrutes!

    
respondido por el James 14.02.2014 - 18:34
0

Como el usuario original solicitó una herramienta interactiva y no una herramienta de línea de comando: una solución fácil es usar cualquier visor de PDF (okular en Kubuntu, evince o incluso Firefox en Ubuntu) y luego usar el diálogo de impresión estándar, elegir "imprimir en archivo PDF", y luego seleccionar en el diálogo de configuración extendida, qué páginas "imprimir". Esta variante tiene algunos inconvenientes, ya que algunos trucos en el PDF original (como páginas giradas, formularios, etc.) pueden perderse, pero funciona de manera sencilla para la mayoría de los archivos PDF simples.

    
respondido por el Kai Petzke 26.03.2018 - 12:36

Lea otras preguntas en las etiquetas