C'è un modo per appiattire un'immagine .pdf dalla riga di comando?


19

In GIMP, posso importare un .pdf e usare la GUI per appiattirlo (se è stato realizzato con molti livelli) selezionando "Appiattisci immagine" nel menu a discesa "Immagine". Posso quindi esportare il .pdf con un nuovo nome file.

Mi piacerebbe automatizzare questo. C'è un modo per farlo tramite il terminale?


1
installa imagemagick e leggi man mogrify-im6, montage-im6, display-im6, stream-im6, identif-im6, import-im6, conjure-im6, composite-im6, convert-im6, animate-im6 e compare-im6.
Golfo Persico,

Risposte:


25

Ho trovato questi 2 metodi tramite Google, in questo thread intitolato: Ri: Appiattimento dei file PDF dalla riga di comando UNIX .

Metodo n. 1 - usando la conversione di Imagemagick:
$ convert orig.pdf flattened.pdf 

NOTA: la qualità risulta essere tale con questo approccio.

Metodo n. 2 - Utilizzo di pdf2ps -> ps2pdf:
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf 

NOTA: è stato segnalato che questo metodo mantiene la qualità dell'immagine.


1
Migliore qualità di GIMP sul secondo - grazie!
generic_user

@ACD - buono a sapersi. Sono contento di aver risolto il tuo Q.
slm

2
Il metodo 1 ha generato un'immagine molto sfocata, mentre il metodo 2 ha funzionato perfettamente.
Severyn Kozak,

1
Sfortunatamente, il Metodo n. 2 non rasterizza l'immagine, quindi se stai cercando di bloccare porzioni sensibili, un utente potrebbe comunque aprire il documento e rimuovere i livelli (con qualcosa come Inkscape). È possibile, tuttavia, modificare la risoluzione del Metodo # 1: $ convert -density 150 {original,flattened}.pdf Se avete bisogno di risparmiare spazio su disco, è possibile utilizzare -type Grayscaleo -monochromeo cose del genere.
eacousineau,

1
Entrambi i metodi rasterizzeranno il pdf, sebbene il metodo n. 2 lo faccia con una risoluzione molto più elevata. Quindi nessuno di questi metodi è soddisfacente.
Formica

18

Ghostscript (gs) ha funzionato meglio di pdf2pse convertper me. La qualità è stata appena degradata e le dimensioni del file sono ridotte.

gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged  \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf

Trovato qui: http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/


Questo metodo funziona alla grande, il pdf non è rasterizzato e il testo è conservato come testo
Ant

2
Ho provato a usarlo per rimuovere un livello di trasparenza tramite l'appiattimento, ma non ha funzionato per me.
mikemtnbikes,

Ha cambiato un carattere per me, ma per il resto una risoluzione molto migliore rispetto agli altri metodi proposti.
ste

1

Sebbene convertire manterrà le stesse dimensioni del file, l'ho trovato lento.

Il metodo pdf2ps ps2pdf è più veloce ma ho notato che stava aumentando le dimensioni del file.

pdftk è bello perché non è solo veloce ma mantiene anche una dimensione del file simile.

Questo è ciò che uso per appiattire in blocco una directory.

    function pdfflatten () {
        pdftk "$1" output "$2" flatten
    }
    export pdfflatten
    alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'

pdftk flatten non modifica le immagini all'interno di un PDF. Dai documenti "unisce i campi del modulo interattivo di un PDF (e i suoi dati) con le pagine del PDF"
Aidan Kane,

1
Per essere chiari, questo approccio non appiattisce i livelli trasparenti (come indicato sopra).
mikemtnbikes,
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.