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.