Sto generando un PDF dinamicamente. Come posso controllare il numero di pagine nel PDF usando uno script di shell?Come scrivere script di shell per trovare il numero di pagine in PDF?
risposta
senza alcun pacchetto aggiuntivo:
foo=$(strings < pdffile.pdf | sed -n 's|.*/Count -\{0,1\}\([0-9]\{1,\}\).*|\1|p' | sort -rn | head -n 1)
Uso pdfinfo:
foo=$(pdfinfo pdffile.pdf | grep Pages | awk '{print $2}')
Utilizzando pdftk:
foo=$(pdftk pdffile.pdf dump_data|grep NumberOfPages| awk '{print $2}')
+1 su un mac l'ultimo modo, con pdftk, ha funzionato subito – gg349
Ho scoperto che il metodo solo shell non è sempre affidabile. Ho file PDF con una sola pagina che ne ha diversi/contali con numeri diversi.Suggerisco di usare uno o due altri metodi. – Crami
@Crami grazie per le informazioni! È possibile condividere almeno uno di questi PDF? –
La libreria ImageMagick fornisce uno strumento chiamato identificare quale in combinazione con il conteggio delle linee di output che si ottiene che cosa siete dopo ... ImageMagick è una facile installazione su OSX con birra.
Ecco uno script bash funzionale, in grado di catturare ad una variabile shell e discariche si torna alla schermata ...
#/bin/bash
pdfFile=$1
echo "Processing $pdfFile"
numberOfPages=$(/usr/local/bin/identify "$pdfFile" 2>/dev/null | wc -l | tr -d ' ')
#Identify gets info for each page, dump stderr to dev null
#count the lines of output
#trim the whitespace from the wc -l outout
echo "The number of pages is: $numberOfPages"
E l'uscita di eseguirlo ...
$ ./countPages.sh aSampleFile.pdf
Processing aSampleFile.pdf
The number of pages is: 2
$
BTW: si dovrebbe usare '$()' invece di backticks '\' \ '' vedere [BashFAQ/082] (http://mywiki.wooledge.org/BashFAQ/082) –
fresco, script aggiornato come suggerito. – np0x
appena scavato fuori un vecchio copione (in ksh) ho trovato:
#!/usr/bin/env ksh
# Usage: pdfcount.sh file.pdf
#
# Optimally, this would be a mere:
# pdfinfo file.pdf | grep Pages | sed 's/[^0-9]*//'
[[ "$#" != "1" ]] && {
printf "ERROR: No file specified\n"
exit 1
}
numpages=0
while read line; do
num=${line/*([[:print:]])+(Count)?(-)+({1,4}(\d))*([[:print:]])/\4}
((num > numpages)) && numpages=$num
done < <(strings "[email protected]" | grep "/Count")
print $numpages
L'utilità pdftotext
converte un file PDF in formato testo di pagina inserendo pause tra le pagine. (Aka: caratteri di avanzamento del modulo $'\f'
):
NAME
pdftotext - Portable Document Format (PDF) to text converter.
SYNOPSIS
pdftotext [options] [PDF-file [text-file]]
DESCRIPTION
Pdftotext converts Portable Document Format (PDF) files to plain text.
Pdftotext reads the PDF file, PDF-file, and writes a text file, text-file. If text-file is
not specified, pdftotext converts file.pdf to file.txt. If text-file is ´-', the text is
sent to stdout.
Ci sono molte combinazioni per risolvere il problema, scegliere uno di loro:
1) pdftotext + grep:
$ pdftotext file.pdf - | grep -c $'\f'
2) pdftotext + awk (v1):
$ pdftotext file.pdf - | awk 'BEGIN{n=0} {if(index($0,"\f")){n++}} END{print n}'
3) pdftotext + awk (v2):
$ pdftotext sample.pdf - | awk 'BEGIN{ RS="\f" } END{ print NR }'
4) pdftotext + awk (v3):
$ pdftotext sample.pdf - | awk -v RS="\f" 'END{ print NR }'
Speranza che aiuta!
- 1. numero di pagine in un file pdf
- 2. È possibile utilizzare Haskell per scrivere script di shell?
- 3. Come scrivere script di shell Unix con opzioni?
- 4. Analisi di pagine PDF come immagini javascript
- 5. SQLite per script di shell
- 6. Come si fa a trovare il fattoriale di un numero in uno script Bash?
- 7. script di shell + numeri somma
- 8. Come definire uno script di shell con numero variabile di argomenti?
- 9. Script di shell per inviare e-mail
- 10. pagine Split A4 in un file PDF di pagine A5
- 11. Test di unità per script di shell
- 12. come aggiungere il numero intero e un numero float in UNIX shell script
- 13. l'ordinamento in script di shell
- 14. Impostazione di Shell Script per Vagrant Setup
- 15. Ghostscript: PDF totale pagine
- 16. Shell array di script
- 17. Come impostare il numero totale di pagine in Tabelle dati
- 18. script di shell: if
- 19. Come distribuire il mio script Python/shell?
- 20. Come includere il file in uno script di shell bash
- 21. Salvataggio di Matplotlib in diverse pagine di un PDF
- 22. Come stampare il risultato dello script di shell in CMake?
- 23. Come ottenere il penultimo argomento dallo script di shell?
- 24. Script di shell Linux per il backup del database
- 25. script di shell: trovare il valore massimo in una sequenza di numeri interi senza ordinare
- 26. Come scrivere uno script di shell che controlla se il repository git è aggiornato?
- 27. compilatori per gli script di shell
- 28. Controllo versione per script di shell
- 29. script di shell per trovare il nome del file dal suo percorso
- 30. FLOT dati come immagine per scrivere in PDF
Utilizzare solo comandi shell incorporati? O "permetti" strumenti esterni come ad es. pdftk o pdfinfo? –
ok ok con qualsiasi mezzo, ma ho bisogno di numero di pagina in una variabile (script di shell) in modo che io possa passare questo parametro ad un'altra funzione. – Manish
Questa domanda potrebbe essere utile: (http://stackoverflow.com/questions/36655478/bash-routine-to-return-the-page-number-of-a-given-line-number-from-text-file) – Lacobus