Come posso estrarre un intervallo di pagine / una parte di un PDF?

300

Hai idea di come estrarre una parte di un documento PDF e salvarla come PDF? Su OS X è assolutamente banale usando Anteprima. Ho provato l'editor PDF e altri programmi, ma senza risultati.

Vorrei un programma in cui selezionassi la parte che desidero e poi la salvassi come pdf con un comando semplice come CMD + N su OS X. Voglio la parte estratta deve essere salvata in formato PDF e non in jpeg ecc.

    
posta user72469 26.11.2012 - 03:06
fonte

14 risposte

339

pdftk è uno strumento multi-piattaforma utile per il lavoro ( pdftk homepage ).

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

si passa il nome file del pdf principale, quindi si dice di includere solo determinate pagine (12-15 in questo esempio) e di inviarlo a un nuovo file.

    
risposta data Martin H 17.04.2013 - 17:21
fonte
192

Molto semplice, usa il lettore PDF predefinito:

stampa come file. è così!

poi

    
risposta data Abdennour TOUMI 14.11.2013 - 11:25
fonte
62

Intervallo di pagine - Script Nautilus

Panoramica

Ho creato uno script leggermente più avanzato basato sul tutorial @ThiagoPonte collegato a. Le sue caratteristiche principali sono

  • che è basato su una GUI,
  • compatibile con gli spazi nei nomi di file,
  • e basato su tre diversi backend che sono in grado di conservare tutti gli attributi del file originale

Cattura schermo

Codice

#!/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

Installazione

Segui le istruzioni di installazione generiche per gli script Nautilus . Assicurati di leggere attentamente l'intestazione dello script in quanto aiuterà a chiarire l'installazione e l'utilizzo dello script.

Pagine parziali - PDF Shuffler

Panoramica

  

PDF-Shuffler è una piccola applicazione python-gtk che aiuta l'utente a unire o dividere documenti PDF e ruotare, ritagliare e riorganizzare le proprie pagine utilizzando un'interfaccia grafica interattiva e intuitiva. È un frontend per python-pyPdf.

Installazione

sudo apt-get install pdfshuffler

Utilizzo

PDF-Shuffler può ritagliare ed eliminare singole pagine PDF. Puoi usarlo per estrarre un intervallo di pagine da un documento o anche pagine parziali usando la funzione di ritaglio:

Elementi della pagina - Inkscape

Panoramica

Inkscape è un editor di grafica vettoriale open source molto potente. Supporta un'ampia gamma di formati diversi, inclusi i file PDF. Puoi usarlo per estrarre, modificare e salvare elementi di pagina da un file PDF.

Installazione

sudo apt-get install inkscape

Utilizzo

1.) Apri il file PDF di tua scelta con Inkscape. Apparirà una finestra di dialogo di importazione. Scegli la pagina da cui vuoi estrarre gli elementi. Lascia le altre impostazioni così come sono:

2.) In Inkscape fai clic e trascina per selezionare gli elementi che vuoi estrarre:

3.) Inverti la selezione con ! ed elimina l'oggetto selezionato con DELETE :

4.) Ritaglia il documento negli oggetti rimanenti accedendo alla finestra di dialogo Proprietà documento con CTRL + SHIFT + D e selezionando "adatta documento all'immagine":

5.) Salva il documento come file PDF dal File - & gt; Salva come finestra di dialogo:

6.) Se nel documento ritagliato sono presenti immagini bitmap / raster è possibile impostare il DPI nella finestra di dialogo successiva:

7.) Se hai seguito tutti i passaggi, avrai creato un vero file PDF composto solo da oggetti di tua scelta:

    
risposta data Glutanimate 17.04.2013 - 17:11
fonte
30

Salva questo come uno script di shell, come 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 \
   

Per eseguire il tipo:

./pdfextractor.sh 4 20 myfile.pdf

1) 4 si riferisce alla pagina in cui inizierà il nuovo pdf.

2) 20 si riferisce alla pagina con cui terminerà il pdf con

3) myfile.pdf è il file pdf che vuoi estrarre parti.

L'output sarebbe myfile_p4_p20.pdf nella stessa directory del file pdf originale.

Tutto questo e altre informazioni qui: Suggerimento tecnico

    
risposta data ThiagoPonte 16.04.2013 - 19:40
fonte
26

QPDF è fantastico. Utilizzalo in questo modo per estrarre le pagine 1-10 da input.pdf e salvarlo come output.pdf .

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

Tieni presente che input.pdf viene scritto due volte.

Puoi installarlo invocando:

apt-get install qpdf

Oppure, andando alla directory delle app di Ubuntu:

È un ottimo strumento per la manipolazione dei PDF, che è molto veloce, ha pochissime dipendenze. "Può crittografare e linearizzare i file, esporre le parti interne di un file PDF e compiere molte altre operazioni utili agli utenti finali e agli sviluppatori di PDF."

link

    
risposta data Ho1 09.09.2015 - 09:10
fonte
19

Esiste un'utilità della riga di comando chiamata pdfseparate .

Dai documenti:

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

Oppure, per selezionare una singola pagina (in questo caso, la prima pagina) dal file sample.pdf:

pdfseparate -f 1 -l 1 sample.pdf sample-1.pdf
    
risposta data jdmcbr 29.10.2014 - 19:17
fonte
17

pdftk ( sudo apt-get install pdftk ) è anche una grande linea di comando per la manipolazione di PDF. Ecco alcuni esempi di cosa può fare pdftk :

   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

Nel tuo caso, vorrei fare:

     pdftk A=input.pdf cat A<page_range> output output.pdf
    
risposta data Andrzej Pronobis 29.10.2014 - 19:23
fonte
10

In qualsiasi sistema su cui è installata una distribuzione TeX:

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

Ad esempio:

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

Vedi link

    
risposta data Ioannis Filippidis 01.09.2017 - 22:18
fonte
6

Hai provato PDF Mod?

Puoi ad esempio .. estrarre le pagine e salvarle come pdf.

Descrizione:

PDF Mod è un semplice strumento per la modifica di documenti PDF. Può ruotare, estrarre, rimuovere e riordinare le pagine tramite trascinamento. Più documenti possono essere combinati tramite trascinamento della selezione. È inoltre possibile modificare il titolo, l'oggetto, l'autore e le parole chiave di un documento PDF con il PDF Mod.

Spero che questo sia utile.

REGARS.

    
risposta data Roman Raguet 26.11.2012 - 03:17
fonte
6

Stavo cercando di fare lo stesso. Tutto quello che devi fare è:

  1. installa pdftk :

    sudo apt-get install pdftk
    
  2. se vuoi estrarre pagine a caso:

    pdftk myoldfile.pdf cat 1 2 4 5 output mynewfile.pdf
    
  3. se vuoi estrarre un intervallo:

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

Controlla la fonte per ulteriori informazioni .

    
risposta data theCode 03.05.2016 - 06:00
fonte
5

Come risulta, posso farlo con imagemagick . Se non ce l'hai, installa semplicemente con:

sudo apt-get install imagemagick

Nota 1 : Ho provato questo con un pdf di una pagina (sto imparando a usare imagemagick , quindi non volevo più problemi del necessario). Non so se / come funzionerà con più pagine, ma puoi estrarre una pagina di interesse con pdftk :

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

dove si indica il numero di pagina da dividere (nell'esempio sopra, A1 seleziona la prima pagina).

Nota 2 : L'immagine risultante utilizzando questa procedura sarà un raster.

Apri il pdf con il comando display , che fa parte della suite imagemagick :

display file.pdf

Il mio assomigliava a questo:


Clicca sull'immagine per vedere una versione a piena risoluzione

Ora fai clic sulla finestra e un menu si aprirà di lato. Qui, seleziona Trasforma | Ritaglia .

Nella finestra principale, puoi selezionare l'area che vuoi ritagliare semplicemente trascinando il puntatore (selezione classica da angolo a angolo).


Nota il puntatore a forma di mano intorno all'immagine mentre selezioni

Questa selezione può essere perfezionata prima di passare al passaggio successivo.

Una volta che hai finito, prendi nota del piccolo rettangolo che appare nell'angolo in alto a sinistra (vedi l'immagine sopra). Mostra le dimensioni dell'area selezionata per prima (ad esempio 281x218 ) e seconda le coordinate del primo angolo (ad esempio +256+215 ).

Annotare le dimensioni dell'area selezionata; ne avrai bisogno al momento di salvare l'immagine ritagliata.

Ora, tornando al menu pop (che ora è il menu specifico "ritaglio"), fai clic sul pulsante Ritaglia .

Infine, una volta soddisfatti dei risultati del ritaglio, fai clic sul menu File | Salva

Vai alla cartella in cui desideri salvare il pdf ritagliato, digita un nome, fai clic sul pulsante Formato , nella finestra "Seleziona tipo di formato immagine" seleziona PDF e fai clic sul pulsante Seleziona . Torna alla finestra "Sfoglia e seleziona un file", fai clic sul pulsante Salva .

Prima di salvare, imagemagick chiederà di "selezionare la geometria della pagina". Qui, digiti le dimensioni dell'immagine ritagliata, usando una semplice lettera "x" per separare larghezza e altezza.

Ora puoi fare tutto ciò perfettamente dalla riga di comando (il comando è convert con l'opzione -crop ) - sicuramente è più veloce, ma dovresti sapere in anticipo le coordinate dell'immagine che vuoi estrarre . Controlla man convert e un esempio nella loro pagina web .

    
risposta data carnendil 19.04.2013 - 02:54
fonte
2

PDF Split and Merge è molto utile per questa e altre operazioni di manipolazione dei PDF.

Scarica da qui

    
risposta data To Do 01.06.2013 - 12:45
fonte
0

Se vuoi estrarre dai tuoi PDF, puoi utilizzare link . È uno strumento straordinario per estrarre appunti, evidenziazioni e immagini dai PDF. Puoi anche guardare tutorial su Youtube digitando sumnotes .

Spero che ti piaccia!

    
risposta data James 14.02.2014 - 18:34
fonte
0

Come l'utente originale ha chiesto uno strumento interattivo e non uno strumento da riga di comando: una soluzione semplice è usare qualsiasi visualizzatore PDF (okular su Kubuntu, evince o anche Firefox su Ubuntu) e quindi usare semplicemente la finestra di dialogo di stampa standard, scegliere "stampa su file PDF", quindi selezionare nella finestra di dialogo delle impostazioni estese, quali pagine "stampare". Questa variante presenta alcuni inconvenienti, poiché alcuni espedienti sul PDF originale (come pagine ruotate, moduli, ecc.) Potrebbero andare persi, ma funziona in modo semplice per la maggior parte dei PDF semplici.

    
risposta data Kai Petzke 26.03.2018 - 12:36
fonte

Leggi altre domande sui tag