è possibile verificare se pdf è protetto da password usando ghostscript? quale sarebbe il comando? So che puoi eliminare la password del pdf usando ghostscript, ma tutto quello che voglio fare è solo controllare se il PDF è protetto da password o abilitato per la sicurezza.è possibile verificare se pdf è protetto da password usando ghostscript?
risposta
checkuserpasswdPDF.sh
:
#!/bin/sh
GS=~/gs/bin/gs
output=`$GS -dBATCH -sNODISPLAY "$1" 2>&1`
gsexit=$?
if [ "$gsexit" == "0" ]; then
echo "Not user-password protected"
exit 0;
else
found=`echo "$output" |grep -o "This file requires a password"`
if [ -z "$found" ]; then
echo "Failed to invoke gs"
exit $gsexit
else
echo "Protected"
exit 0;
fi
fi
Verifica la presenza di file PDF protetti da password utente-: checkuserpasswdPDF.sh test.pdf
.
GS ignora le password di proprietario (vedere this).
humm questo sembra promettente, farò un tentativo – Aman
Con pdftk
è possibile rilevare una password utente o la password del proprietario semplicemente tentando di eseguire un'operazione dump_data
.
protected=0
pdftk "input.pdf" dump_data output /dev/null dont_ask || protected=1
Il problema qui è che non si sa che cosa la password impedisce: la lettura, l'estrazione dei dati, la modifica ...?
ho provato qualcosa di simile, ma era limitante e pdftk non mi dava sempre risultati corretti. – Aman
Utilizzando un file bat, è possibile eseguire una piccola soluzione cercando "Encrypt" nei file PDF. Il suo silenzioso veloce per cercare tra molti file.
Findstr /M /I "Encrypt" *.pdf
Questo restituirà tutti i nomi di file che sono protetti (dal momento che "Encrypt" sarà scritto nel file come dos lo legge)
forse questo è qualcosa che qualcuno può utilizzare. Io uso:
for /f %%a in ('Findstr /M /I "Encrypt" *.pdf') do move %%a c:\tempfiles\
per spostare tutti i pdf protetti in c: \ tempfiles. Da lì uso ghostscript per rimuovere la sicurezza e spostarlo nella cartella originale.
Dopo aver avviato una taglia, vorrei anche sapere se è possibile rilevare PDF protetti da password con altri strumenti. – Benoit