668 votes

Comment extraire une plage de pages / une partie d'un PDF ?

Savez-vous comment extraire une partie d'un document PDF et l'enregistrer au format PDF ? Sous OS X, c'est absolument trivial en utilisant Preview. J'ai essayé l'éditeur PDF et d'autres programmes mais sans succès.

J'aimerais un programme qui me permette de sélectionner la partie que je veux et de l'enregistrer en tant que fichier PDF avec une commande simple comme celle-ci CMD + N sur OS X. Je veux que la partie extraite soit enregistrée au format PDF et non au format JPEG, etc.

707voto

user7361 Points 11

pdftk est un outil multiplateforme utile pour ce travail ( Page d'accueil de pdftk ).

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

vous passez le nom de fichier du pdf principal, puis vous lui dites de n'inclure que certaines pages (12-15 dans cet exemple) et de les sortir dans un nouveau fichier.

Instructions d'installation :

Pour installer la version snap, qui est un reconditionnement non officiel d'une ancienne version de PDFtk (reconditionnée par Scott Moser), rendez-vous à l'adresse suivante ce lien ou courir :

sudo snap install pdftk

Alternativement, vous pouvez installer un portage open source de PDFtk vers Java par Marc Vinyals, en exécutant :

sudo apt install pdftk-java

Une autre alternative est PDFtk Server, disponible sur le site web : https://www.pdflabs.com/tools/pdftk-server/ . Cette version est gratuite pour un usage personnel, mais elle n'est pas open source.

344voto

Budda Points 5575

Très simple. Utilisez le lecteur PDF par défaut, sélectionnez "Imprimer vers le fichier" et c'est tout !

print menu

Ensuite :

setting new PDF

Notez qu'avec cette méthode, le texte ne sera plus consultable, mais tous les textes seront convertis en images : c'est ainsi que fonctionne "Print".

231voto

Ho1 Points 3112

QPDF est génial. Utilisez-le de cette façon pour extraire les pages 1-10 de input.pdf et l'enregistrer comme output.pdf :

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

Cela préserve toutes les métadonnées associées à ce fichier.

De la manuel :

Si vous vouliez les pages 1 à 5 de infile.pdf mais que vous vouliez que le reste des métadonnées soit abandonné, vous pourriez à la place exécuter

qpdf --empty --pages infile.pdf 1-5 -- outfile.pdf

Vous pouvez l'installer en invoquant :

sudo apt-get install qpdf

Il s'agit d'un excellent outil pour la manipulation des PDF. Il est très rapide et a très peu de dépendances. "Il peut crypter et linéariser des fichiers, exposer les internes d'un fichier PDF, et effectuer de nombreuses autres opérations utiles aux utilisateurs finaux et aux développeurs de PDF."

Le dépôt de code de QPDF sur GitHub .

95voto

Glutanimate Points 20429

Gamme de pages - Nautilus script


Vue d'ensemble

J'ai créé un script légèrement plus avancé basé sur le tutoriel dont @ThiagoPonte a donné le lien. Ses principales caractéristiques sont

  • que c'est une interface graphique,
  • compatible avec les espaces dans les noms de fichiers,
  • et basé sur trois backends différents qui sont capables de préserver tous les attributs du fichier d'origine

Capture d'écran

enter image description here

Code

#!/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="$1"
BACKENDSELECTION="^qpdf!ghostscript!cpdf"

# Functions

check_input(){
  if [[ -z "$1" ]]; then
    notify "Error: No input file selected."
    exit 1
  elif [[ ! "$(file -ib "$1")" == *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 "$1"
  notify-send -i application-pdf "PDFextract" "$1"
}

dialog_warning(){
  echo "$1"
  yad --center --image dialog-warning \
  --title "PDFExtract Warning" \
  --text "$1" \
  --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 "$1"
dialog_settings
extract_pages

Installation

Veuillez suivre le instructions d'installation génériques pour Nautilus scripts . Veillez à lire attentivement l'en-tête script car il vous aidera à clarifier l'installation et l'utilisation du script.


Pages partielles - PDF Shuffler


Vue d'ensemble

PDF-Shuffler est une petite application Python-gtk, qui aide l'utilisateur à fusionner ou diviser des documents pdf et à faire pivoter, recadrer et réorganiser leurs pages à l'aide d'une interface graphique interactive et intuitive. Il s'agit d'un frontal pour Python-pyPdf.

Installation

sudo apt-get install pdfshuffler

Utilisation

PDF-Shuffler peut recadrer et supprimer des pages PDF individuelles. Vous pouvez l'utiliser pour extraire une plage de pages d'un document ou même des pages partielles à l'aide de la fonction de recadrage :

enter image description here


Éléments de page - Inkscape


Vue d'ensemble

Inkscape est un éditeur de graphiques vectoriels à code source ouvert très puissant. Il prend en charge un large éventail de formats différents, y compris les fichiers PDF. Vous pouvez l'utiliser pour extraire, modifier et enregistrer des éléments de page d'un fichier PDF.

Installation

sudo apt-get install inkscape

Utilisation

1.) Ouvrez le fichier PDF de votre choix avec Inkscape. Une boîte de dialogue d'importation apparaît. Choisissez la page dont vous voulez extraire des éléments. Laissez les autres paramètres tels quels :

enter image description here

2.) Dans Inkscape, cliquez et faites glisser pour sélectionner le ou les éléments que vous voulez extraire :

enter image description here

3.) Inversez la sélection avec ! et supprimer l'objet sélectionné avec DELETE :

enter image description here

4.) Recadrer le document vers les objets restants en accédant à l'objet Propriétés du document dialogue avec CTRL + SHIFT + D et en sélectionnant "adapter le document à l'image" :

enter image description here

5.) Enregistrez le document en tant que fichier PDF à partir de la page Fichier --> Enregistrer sous dialogue :

6.) Si votre document recadré contient des images bitmap/raster, vous pouvez définir leur DPI dans la boîte de dialogue qui apparaît ensuite :

enter image description here

7.) Si vous avez suivi toutes les étapes, vous aurez produit un véritable fichier PDF composé uniquement des objets de votre choix :

enter image description here

66voto

ThiagoPonte Points 1836

Enregistrez ceci comme un Shell Shell, comme pdfextractor.sh :

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

Pour l'exécuter, tapez :

./pdfextractor.sh 4 20 myfile.pdf
  1. 4 fait référence à la page sur laquelle le nouveau pdf commencera.

  2. 20 fait référence à la page avec laquelle il terminera le pdf.

  3. myfile.pdf est le fichier pdf dont vous voulez extraire des parties.

La sortie serait myfile_p4_p20.pdf dans le même répertoire que le fichier pdf original.

Tout ceci et plus d'informations ici : Conseil technique

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X