Mit convert eine bestimmte Seite aus einer PDF-Datei abrufen?


21

Ich weiß, dass ich das schon einmal gemacht habe, also bin ich mir sicher, dass es möglich ist, ich vergesse einfach, wie es geht. Es gibt eine Möglichkeit, convert anzuweisen, eine bestimmte Seite eines PDF-Dokuments zu erfassen, und ich möchte das Format dieser Seite als PDF beibehalten.

Antworten:


24

ImageMagick ist ein Tool für Bitmap-Bilder, das die meisten PDFs nicht haben. Wenn Sie es verwenden, werden die Daten gerastert , was häufig nicht wünschenswert ist.

Pdftk kann eine oder mehrere Seiten aus einer PDF-Datei extrahieren.

pdftk A=input.pdf cat A42 A43 output pages_42_43.pdf

Wenn Sie eine LaTeX-Installation mit PDFLaTeX haben, können Sie pdfpages verwenden . Es gibt einen Shell-Wrapper für pdfpages, pdfjam .

pdfjam -o pages_42_43.pdf input.pdf 42,43

Eine andere Möglichkeit (Overkill hier, aber nützlich für komplexere Anforderungen als eine Seite) ist Python mit der PyPdf- Bibliothek.

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in [42, 43]:
    output.addPage(input.getPage(i))
output.write(sys.stdout)

Ich wollte es auch empfehlen pdftk. Du wirst es benutzen wollen.
Sebastian

pdfjamfunktioniert wie ein Zauber und wurde bereits mit meiner LaTeX-Distribution installiert. Es ist sehr einfach zu bedienen.
HDL

Vielen Dank. Die extrahierte Seite war größer als das gesamte PDF mit, pdftksodass es nicht so aussieht, als würde sie einfach eine Seite extrahieren. Ansonsten war das Ergebnis in Ordnung.
Eric Duminil

25

Sie können die Indexnotation mit verwenden, convert(1)um ein PDF zu "indexieren":

$ convert source.pdf[1] dest.pdf 

Der Indexwert hängt davon ab, wie der PDF-Exporter die Seiten nummeriert hat. Bei Tests mit Dateien hier scheinen die Zahlen nullbasiert zu sein, sodass Sie im obigen Beispiel die zweite Seite des Dokuments erhalten. Ich habe Beispiele online gesehen, in denen stattdessen Buchstabenindizes angezeigt werden, da der PDF-Ersteller die Seiten in diesem Dokument anscheinend stattdessen auf diese Weise "nummeriert" hat.

Leider führt dies nicht zu sehr guten Ergebnissen, da ImageMagick davon ausgeht, dass alles pixelbasiert ist, und daher Vektorbilder wie die Typografie in einem typischen PDF-Dokument rastert.

Ein besseres Tool für den Job ist Ghostscript , das Sie wahrscheinlich bereits installiert haben:

$ gs -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=pdfwrite \
    -sOutputFile=dest.pdf -f src.pdf

Dadurch werden die PDF-Daten unverändert weitergegeben, da Ghostscript PDF (ein PostScript-Derivat) viel tiefer versteht als ImageMagick.


2
eigentlich ist das bei imagemagick nicht der Fall, wenn Sie den Parameter -density auf einen Wert zwischen 300 und 400 einstellen, wird der ausgegebene Text aus dem PDF im PNG gut aussehen.
Buggedcom

2
Auf dem Bildschirm wird es sicher gut aussehen, aber wenn Sie dann zum Drucken gehen, möchten Sie die Dichte noch höher einstellen. Und dann haben Sie wahrscheinlich Probleme damit, wie der RIP Ihres Druckers mit den von ImageMagick ausgegebenen grauen Antialiasing-Pixeln umgeht. Sie können dann stattdessen eine Ausgabe in 1-Bit-Schwarzweiß mit der nativen Auflösung Ihres Druckers vornehmen, die 1.200 dpi oder 1.440 dpi oder etwas anderes sein kann, und Sie müssen dies im Voraus wissen, um eine scharfe Ausgabe zu erhalten. Nein, ich stehe zu meiner Aussage: Halten Sie PDF-Daten so lange wie möglich in Vektorform.
Warren Young

@ Buggedcom Ich habe festgestellt, -density 300ist der Sweet Spot. Alles, was größer ist, und Sie erstellen riesige temporäre Dateien - die Sie wahrscheinlich sowieso auf Miniaturansichten verkleinern werden
Mike Causer

2
Sie können auch eine Reihe von Seiten (zB ein gif für die Herstellung) wählen wie sosource.pdf[3-6]
texasflood
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.