Usa convert per prendere una pagina specifica da un file PDF?


21

So di averlo già fatto in precedenza, quindi sono sicuro che sia possibile, dimentico solo come farlo. C'è un modo per dire a convert di prendere una pagina specifica di un PDF e mi piacerebbe mantenere il formato di quella pagina come PDF.

Risposte:


24

ImageMagick è uno strumento per le immagini bitmap, che la maggior parte dei PDF non lo è. Se lo usi, rasterizzerà i dati, il che spesso non è desiderabile.

Pdftk può estrarre una o più pagine da un file PDF.

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

Se si dispone di un'installazione LaTeX con PDFLaTeX, è possibile utilizzare pagine pdf . C'è un involucro di shell per pdfpages, pdfjam .

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

Un'altra possibilità (eccessiva qui, ma utile per requisiti più complessi di una pagina) è Python con la libreria PyPdf .

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

Stavo per raccomandare pdftkanche. Lo vorrai usare.
Sebastian

pdfjamfunziona come un fascino ed era già installato con la mia distribuzione LaTeX. È molto facile da usare
hdl,

Molte grazie. La pagina estratta era più grande del pdf completo con pdftkquindi non sembra semplicemente estrarre una pagina. Il risultato andava bene altrimenti.
Eric Duminil,

25

È possibile utilizzare la notazione dei pedici con convert(1)per "indicizzare" in un PDF:

$ convert source.pdf[1] dest.pdf 

Il valore dell'indice dipende da come l'esportatore PDF ha numerato le pagine. Nei test sui file qui, i numeri sembrano essere a base zero, quindi l'esempio sopra ti porta alla seconda pagina del documento. Ho visto esempi online in cui invece mostrano indici di lettere, poiché apparentemente il creatore di PDF ha "numerato" le pagine in quel documento in quel modo.

Sfortunatamente, questo non dà risultati molto buoni, perché ImageMagick presume che tutto sia basato su pixel e quindi rasterizza le immagini vettoriali, come la tipografia in un tipico PDF.

Uno strumento migliore per il lavoro è Ghostscript , che probabilmente hai già installato:

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

Questo passa i dati PDF attraverso invariato, dal momento che Ghostscript capisce PDF (un derivato PostScript) a un livello molto più profondo di ImageMagick.


2
in realtà non è vero su imagemagick, se imposti il ​​parametro -density su qualcosa di circa 300-400, allora il testo emesso dal pdf nel png sarà perfetto.
buggedcom

2
Apparirà perfetto sullo schermo, certo, ma se poi vai a stampare, vorrai impostare la densità ancora più alta. E quindi, potresti avere problemi con il modo in cui il RIP della tua stampante affronta i pixel di antialiasing grigio emessi da ImageMagick. Quindi puoi scegliere invece di eseguire l'output in bianco e nero a 1 bit alla risoluzione nativa della tua stampante, che potrebbe essere 1.200 dpi, o 1.440 dpi o qualcos'altro, e devi saperlo in anticipo per ottenere un output nitido. No, rispetterò la mia affermazione: è meglio conservare i dati PDF in formato vettoriale il più a lungo possibile.
Warren Young,

@buggedcom che ho trovato -density 300è il punto debole . Qualcosa di più grande e stai creando enormi file temporanei - che probabilmente ridimensionerai comunque fino alle anteprime
Mike Causer,

2
Puoi anche selezionare un intervallo di pagine (ad esempio per fare una gif) in questo modosource.pdf[3-6]
texasflood
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.