Come interrogare le dimensioni della pagina pdf dalla riga di comando?


35

Per lo scripting ho bisogno di ottenere le dimensioni della pagina di un file PDF (in mm).

pdfinfo lo stampa in 'pts', ad esempio:

Page size:      624 x 312 pts

Cosa dovrei usare?

O quale unità è 'pts' comunque - nel caso in cui voglio convertirli ...


2
Punta su Wikipedia
Mat,

Di quale pagina hai desiderato la dimensione? La copertina esterna di dimensioni legali? La dimensione del volantino "questa pagina è intenzionalmente vuota"? La doppia dimensione della lettera?
Ignacio Vazquez-Abrams,

Risposte:


31

L'unità 'pts' utilizzata da pdfinfoindica un punto PostScript. Un punto PostScript è definito in termini di pollice e risoluzione di 72 punti per pollice:

Tra la fine degli anni '80 e gli anni '90, il punto tradizionale è stato soppiantato dal punto di desktop publishing (chiamato anche punto PostScript), che è stato definito come 72 punti al pollice ( 1 punto = 1⁄72 pollici = 25,4⁄72 mm = 0,352 ¯7 mm [≙ 0,3528 mm ]).

Il manuale gvcontiene un elenco di formati di carta comuni specificati nei punti PostScript.


1
su formati di carta comuni: a pdfinfovolte mi dà il formato di carta (come Page size: 595.28 x 841.89 pts (A4)) - Mi chiedo se lo fa per un elenco di formati di pagina che conosce?
njsg,

2
Un punto è in realtà 0,352777777 ... mm, quindi 0,3528 mm è un'approssimazione più vicina.
cjm,

15

Non è il modo più semplice, ma dato imagemagicke unitspotresti anche usare

$ identify -verbose some.pdf | grep "Print size" 
Print size: 8.26389x11.6944

per trovare la dimensione della pagina in pollici (questo può produrre diversi risultati se il PDF usa dimensioni diverse) e quindi convertire i numeri in questo modo:

$ units -t '8.26389 inch' 'mm'
  209.90281

Ciò significa che 8,26 pollici sono 209,9 mm (ho usato un PDF A4 per questo).


1
Quando ho identifyun PDF su OS X non ottengo alcun output.
David Moles,

molto tardi, ma identifyrichiede ImageMagick
defuzed il

6

È venuto attraverso lo stesso problema e arrivò alla seguente soluzione. Non sono entrato nella documentazione di come sono costruiti i file pdf, ho solo confrontato due file PDF vuoti con dimensioni di pagina diverse.

Sembra che i pdf abbiano tutti i tipi di attributi incorporati tra "<<" e ">>". Ho scoperto che le informazioni sulla dimensione della pagina sono lì in chiaro e possono essere trovate con una semplice ricerca regex.

Questo può o non può essere vero per tutti i pdf ma ha funzionato su tutto ciò che ho potuto trovare da diverse fonti.

La parte pertinente può apparire come una di queste per una pagina di formato A4:

/MediaBox [0 0 595 842]
/MediaBox[0 0 595 842]
/MediaBox[ 0 0 595.32 841.92]

Significa [0 0 larghezza altezza] quindi ecco la mia soluzione super zoppa ma funzionante per estrarre questo:

cat test.pdf | egrep -ao "/MediaBox ?\[ ?[0-9]+ [0-9]+ [0-9]+(\.[0-9]+)? [0-9]+(\.[0-9]+)?\]" | head -1

Cambia test.pdf nel tuo file.


1
si noti che i valori restituiti da questo sono in "punti" non in mm, pixel o pollici
defuzati il

0

Ho usato la risposta maxchlepzigs per calcolare direttamente il mm:

$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'

questo funziona anche con la risposta di Alex Knauf ma identifica richiede molto più tempo di pdfinfo e richiede imagemagick, il lato positivo è che puoi usarlo per più file (es. inserendo un cd in una directory e usando *.pdf):

$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'

Il secondo grepcomando ottiene i due valori punto / pollice. Sono abbastanza sicuro che puoi saltare il grege regex e farlo direttamente con awk ma non sono riuscito a capirlo.

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.