Wie kann ich einen Seitenbereich / einen Teil einer PDF extrahieren?

297

Haben Sie eine Idee, wie Sie einen Teil eines PDF-Dokuments extrahieren und als PDF speichern können? Unter OS X ist es absolut trivial, wenn Sie Vorschau verwenden. Ich habe versucht, PDF-Editor und andere Programme, aber ohne Erfolg.

Ich möchte ein Programm, wo ich den Teil, den ich will, und dann speichern Sie es als pdf mit einem einfachen Befehl wie CMD + N auf OS X. Ich möchte der extrahierte Teil wird im PDF - Format gespeichert und nicht als JPEG etc.

    
user72469 26.11.2012, 03:06
quelle

14 Antworten

337

pdftk ist ein nützliches Multiplattform-Tool für den Job ( pdftk-Startseite ) ).

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

Sie übergeben den Dateinamen des Haupt-PDF, dann sagen Sie, dass nur bestimmte Seiten (12-15 in diesem Beispiel) enthalten sein sollen und geben Sie es in eine neue Datei aus.

    
Martin H 17.04.2013 17:21
quelle
191

sehr einfach, verwenden Sie den Standard-PDF-Reader:

als Datei drucken das ist es!

dann

    
Abdennour TOUMI 14.11.2013 11:25
quelle
62

Seitenbereich - Nautilus-Skript

Übersicht

Ich habe ein etwas fortgeschritteneres Skript basierend auf dem Tutorial @ThiagoPonte erstellt. Seine Hauptmerkmale sind

  • dass es GUI-basiert ist,
  • kompatibel mit Leerzeichen in Dateinamen,
  • und basierend auf drei verschiedenen Backends, die alle Attribute der ursprünglichen Datei
  • beibehalten können

Screenshot

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=""
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

Installation

Bitte folgen Sie den generischen Installationsanweisungen für Nautilus-Skripte . Stellen Sie sicher, dass Sie den Skriptkopf sorgfältig lesen, da dies die Installation und Verwendung des Skripts verdeutlichen kann.

Teilseiten - PDF Shuffler

Übersicht

  

PDF-Shuffler ist eine kleine Python-gtk-Anwendung, die dem Benutzer hilft, PDF-Dokumente zusammenzufassen oder zu teilen und ihre Seiten mit Hilfe einer interaktiven und intuitiven grafischen Benutzeroberfläche zu drehen, auszuschneiden und neu anzuordnen. Es ist ein Frontend für python-pyPdf.

Installation

sudo apt-get install pdfshuffler

Verwendung

PDF-Shuffler kann einzelne PDF-Seiten zuschneiden und löschen. Sie können damit einen Seitenbereich aus einem Dokument oder sogar Teilseiten mit der Cropping-Funktion extrahieren:

Seitenelemente - Inkscape

Übersicht

Inkscape ist ein sehr leistungsfähiger Open-Source-Vektor-Grafik-Editor. Es unterstützt eine Vielzahl von verschiedenen Formaten, einschließlich PDF-Dateien. Sie können damit Seitenelemente aus einer PDF-Datei extrahieren, ändern und speichern.

Installation

sudo apt-get install inkscape

Verwendung

1.) Öffnen Sie die PDF-Datei Ihrer Wahl mit Inkscape. Ein Importdialog erscheint. Wählen Sie die Seite aus, aus der Sie Elemente extrahieren möchten. Belassen Sie die anderen Einstellungen wie folgt:

2.) Klicken und ziehen Sie in Inkscape, um die Elemente auszuwählen, die Sie extrahieren möchten:

3.) Kehren Sie die Auswahl mit ! um und löschen Sie das ausgewählte Objekt mit DELETE :

4.) Das Dokument auf die verbleibenden Objekte zuschneiden, indem Sie mit STRG + UMSCHALT Dokumenteigenschaften zugreifen > + D und wählen Sie "Bild an Bild anpassen":

5.) Speichern Sie das Dokument als PDF-Datei von der Datei - & gt; Speichern unter -Dialog:

6.) Wenn sich in Ihrem ausgeschnittenen Dokument Bitmap- / Rasterbilder befinden, können Sie ihre DPI im nächsten Dialogfeld einstellen:

7.) Wenn Sie alle Schritte befolgt haben, haben Sie eine echte PDF-Datei erstellt, die nur aus den Objekten Ihrer Wahl besteht:

    
Glutanimate 17.04.2013 17:11
quelle
30

Speichern Sie dies als Shell-Skript, wie zB 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 \
   

Geben Sie Folgendes ein:

./pdfextractor.sh 4 20 myfile.pdf

1) 4 verweist auf die Seite, auf der die neue PDF-Datei gestartet wird.

2) 20 bezieht sich auf die Seite, mit der die PDF-Datei endet.

3) myfile.pdf ist die PDF-Datei, die Sie extrahieren möchten.

Die Ausgabe wäre myfile_p4_p20.pdf im selben Verzeichnis der Original-PDF-Datei.

All diese und weitere Informationen finden Sie hier: Tech Tip

    
ThiagoPonte 16.04.2013 19:40
quelle
26

QPDF ist großartig. Verwenden Sie diese Methode, um die Seiten 1-10 aus input.pdf zu extrahieren und speichern Sie sie als output.pdf .

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

Bitte beachten Sie, dass input.pdf zweimal geschrieben wird.

Sie können es installieren, indem Sie Folgendes aufrufen:

apt-get install qpdf

Oder gehen Sie zum Ubuntu Apps-Verzeichnis:

Es ist ein großartiges Tool für die PDF-Manipulation, das sehr schnell ist und sehr wenige Abhängigkeiten aufweist. "Es kann Dateien verschlüsseln und linearisieren, die Interna einer PDF-Datei aufdecken und viele andere Operationen ausführen, die für Endbenutzer und PDF-Entwickler nützlich sind."

Pfandrecht

    
Ho1 09.09.2015 09:10
quelle
18

Es gibt ein Befehlszeilenprogramm namens pdfseparate .

Aus der Dokumentation:

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

Oder wählen Sie eine einzelne Seite (in diesem Fall die erste Seite) aus der Datei sample.pdf:

pdfseparate -f 1 -l 1 sample.pdf sample-1.pdf
    
jdmcbr 29.10.2014 19:17
quelle
17

pdftk ( sudo apt-get install pdftk ) ist auch eine großartige Befehlszeile für die PDF-Manipulation. Hier sind einige Beispiele dafür, was pdftk kann:

   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

In Ihrem Fall würde ich tun:

     pdftk A=input.pdf cat A<page_range> output output.pdf
    
Andrzej Pronobis 29.10.2014 19:23
quelle
10

In jedem System, in dem eine TeX-Distribution installiert ist:

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

Zum Beispiel:

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

Siehe Pfandrecht

    
Ioannis Filippidis 01.09.2017 22:18
quelle
6

Haben Sie PDF Mod probiert?

Sie können zum Beispiel ... Seiten extrahieren und als PDF speichern.

Beschreibung:

PDF Mod ist ein einfaches Werkzeug zum Bearbeiten von PDF-Dokumenten. Es kann drehen, extrahieren, entfernen und Seiten neu anordnen per Drag & Drop. Mehrere Dokumente können per Drag & Drop kombiniert werden. Sie können auch den Titel, das Thema, den Autor und die Schlüsselwörter eines PDF-Dokuments mit PDF Mod bearbeiten.

Ich hoffe, das wird nützlich sein.

Regars

    
Roman Raguet 26.11.2012 03:17
quelle
6

Ich habe versucht, das Gleiche zu tun. Alles, was Sie tun müssen, ist:

  1. install pdftk :

    sudo apt-get install pdftk
    
  2. Wenn Sie zufällige Seiten extrahieren möchten:

    pdftk myoldfile.pdf cat 1 2 4 5 output mynewfile.pdf
    
  3. wenn Sie einen Bereich extrahieren möchten:

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

Überprüfen Sie die Quelle , um weitere Informationen zu erhalten .

    
theCode 03.05.2016 06:00
quelle
5

Wie sich herausstellt, kann ich es mit imagemagick machen. Wenn Sie es nicht haben, installieren Sie einfach mit:

sudo apt-get install imagemagick

Anmerkung 1 : Ich habe das mit einer einseitigen pdf versucht (ich lerne, imagemagick zu verwenden, also wollte ich nicht mehr Schwierigkeiten als notwendig). Ich weiß nicht, ob / wie es mit mehreren Seiten funktioniert, aber Sie können eine Seite von Interesse mit pdftk extrahieren:

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

Hier geben Sie die auszugebende Seitennummer an (im obigen Beispiel wählt A1 die erste Seite).

Anmerkung 2 : Das resultierende Bild, das dieses Verfahren verwendet, wird ein Raster sein.

Öffnen Sie die PDF-Datei mit dem Befehl display , das Teil der imagemagick suite ist:

display file.pdf

Meine sah so aus:


Klicken Sie auf das Bild, um es in voller Auflösung zu sehen

Jetzt klickst du auf das Fenster und ein Menü erscheint auf der Seite. Wählen Sie dort Transformieren | Zuschneiden .

Zurück im Hauptfenster können Sie den Bereich auswählen, den Sie zuschneiden möchten, indem Sie einfach den Zeiger ziehen (klassische Ecke-zu-Ecke-Auswahl).


Beachten Sie den handförmigen Zeiger um das Bild, während Sie

auswählen

Diese Auswahl kann verfeinert werden, bevor mit dem nächsten Schritt fortgefahren wird.

Sobald Sie fertig sind, beachten Sie das kleine Rechteck, das in der oberen linken Ecke erscheint (siehe Bild oben). Es zeigt die Dimensionen des zuerst ausgewählten Bereichs (z. B. 281x218 ) und zweitens die Koordinaten der ersten Ecke (z. B. +256+215 ).

Schreiben Sie die Abmessungen des ausgewählten Bereichs auf; Sie benötigen es zum Zeitpunkt des Speicherns des zugeschnittenen Bildes.

Klicken Sie nun im Pop-Menü (das ist jetzt das spezielle "Zuschneiden" -Menü) auf die Schaltfläche Zuschneiden .

Wenn Sie mit dem Ergebnis des Zuschneidens zufrieden sind, klicken Sie auf das Menü Datei | Speichern

Navigieren Sie zu dem Ordner, in dem Sie die beschnittene PDF-Datei speichern möchten, geben Sie einen Namen ein, klicken Sie auf die Schaltfläche Format und wählen Sie im Fenster "Bildformat auswählen" die Option PDF aus und klicken Sie auf die Schaltfläche Auswählen . Klicken Sie im Fenster "Durchsuchen und Auswählen einer Datei" erneut auf die Schaltfläche Speichern .

Vor dem Speichern fragt imagemagick nach "Seitengeometrie auswählen". Hier geben Sie die Abmessungen des zugeschnittenen Bildes ein und verwenden einen einfachen Buchstaben "x", um Breite und Höhe zu trennen.

Nun können Sie alles perfekt über die Befehlszeile ausführen (der Befehl ist convert mit der Option -crop ) - sicherlich ist es schneller, aber Sie müssten vorher die Koordinaten des Bildes wissen, das Sie extrahieren wollen . Überprüfen Sie man convert und ein Beispiel auf ihrer Webseite .

    
carnendil 19.04.2013 02:54
quelle
2

PDF Split und Merge ist sehr nützlich für diese und andere PDF-Manipulationsoperationen.

Laden Sie hier

herunter     
To Do 01.06.2013 12:45
quelle
0

Wenn Sie Ihre PDF-Dateien extrahieren möchten, können Sie Pfandrecht verwenden. Es ist ein erstaunliches Werkzeug, um Notizen, Markierungen und Bilder aus PDFs zu extrahieren. Sie können sich auch Tutorials auf Youtube ansehen, indem Sie sumnotes eingeben.

Ich hoffe, Sie werden es genießen!

    
James 14.02.2014 18:34
quelle
0

Da der ursprüngliche Benutzer nach einem interaktiven Werkzeug und nicht nach einem Befehlszeilentool gefragt hat: Eine einfache Lösung ist die Verwendung eines beliebigen PDF-Viewers (okular auf Kubuntu, evince oder sogar Firefox auf Ubuntu) und dann einfach den Standarddruckdialog verwenden "In PDF-Datei drucken" und wählen Sie dann im erweiterten Einstellungsdialog, welche Seiten Sie drucken möchten. Diese Variante hat einige Nachteile, da einige Gimmicks auf der ursprünglichen PDF (wie rotierte Seiten, Formulare usw.) verloren gehen können, aber es funktioniert einfach für die meisten einfachen PDFs.

    
Kai Petzke 26.03.2018 12:36
quelle

Tags und Links