Do pisania skryptów muszę uzyskać wymiary strony pliku PDF (w mm).
pdfinfo
po prostu drukuje to w „pts”, np .:
Page size: 624 x 312 pts
Czego powinienem użyć?
Albo jaką jednostką jest i tak „pts” - na wypadek, gdybym chciał je przekonwertować ...
Odpowiedzi:
Jednostka „pts” używana przez
pdfinfo
oznacza punkt PostScript. Punkt PostScript jest zdefiniowany w calach i rozdzielczości 72 kropek na cal:Podręcznik
gv
zawiera listę popularnych formatów papieru określonych w punktach PostScript.źródło
pdfinfo
czasami podaje mi format papieru (jakPage size: 595.28 x 841.89 pts (A4)
) - zastanawiam się, czy to robi, jeśli chodzi o listę rozmiarów stron, o których wie?Nie najłatwiejszy sposób, ale podany
imagemagick
iunits
można go również użyćznaleźć rozmiar strony w calach (może to dać kilka wyników, jeśli plik PDF używa innych wymiarów), a następnie przekonwertować liczby w następujący sposób:
Oznacza to, że 8,26 cala to 209,9 mm (użyłem do tego formatu A4 PDF).
źródło
identify
plik PDF w systemie OS XI, nie otrzymuję żadnych danych wyjściowych.identify
wymaga ImageMagickNatknąłem się na ten sam problem i doszedłem do następującego rozwiązania. Nie wdałem się w dokumentację dotyczącą budowy plików pdf. Porównałem tylko dwa puste pliki pdf o różnych rozmiarach stron.
Wygląda na to, że pliki pdf mają wszelkiego rodzaju atrybuty osadzone między „<<” a „>>”. Odkryłem, że informacje o rozmiarze strony są w postaci zwykłego tekstu i można je znaleźć za pomocą prostego wyszukiwania wyrażeń regularnych.
To może, ale nie musi, być prawdziwe dla wszystkich plików pdf, ale działało na wszystkim, co mogłem znaleźć z różnych źródeł.
Odpowiednia część może wyglądać tak jak każda z tych stron formatu A4:
Oznacza to [0 0 szerokość wysokości], więc oto mój super kiepski, ale działający sposób na wyodrębnienie tego:
Po prostu zmień test.pdf na swój plik.
źródło
Użyłem odpowiedzi maxchlepzigs, aby bezpośrednio obliczyć mm:
$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'
działa to również z odpowiedzią Alexa Knaufsa, ale identyfikacja trwa znacznie dłużej niż pdfinfo i wymaga imagemagick, jednak zaletą jest to, że możesz użyć tego do wielu plików (np. poprzez cd'ing do katalogu i użycie
*.pdf
):$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'
Drugie
grep
polecenie pobiera dwie wartości punkt / cal. Jestem całkiem pewien, że możesz pominąć wyrażenie regularne grep i zrobić to bezpośrednio za pomocą awk, ale nie mogłem tego rozgryźć.źródło