А с картинкой из моего сканера точно такого же размера не работало. Содержимое картинки куда-то улетало за пределы страницы.
Если же использовалась опция -extent то всё работало, но картинка растягивалась до размеров страницы A4 и файл становился большего размера чем возможно: pdf – 213275 байта (картинка 98738), а добился я размера pdf 110868
Вот этот скрип даёт нужный результат (картинка в центре страницы PDF файла) но файл получается больше чем нужно.
$ convert -page 2480x3508 -units PixelsPerInch -density 300x300 -extent 2480x3508 \( -gravity center 2015.06.09.jpg \) -format pdf out.pdf
После долгой пляски с опциями и случайно протестировав на сгенерированной картинке blue-test-rectangle.jpg выяснилось чтобы всё сработало так как хочется нужно удалить EXIF информацию из файла. Мой сканер засунул в файл опции разрешения 300 dpi. После этого опция gravity начинает “сходить с ума”.
Вот такой тест нормально работал и заставил задуматься о том, что проблема в картинке. Первая команда создаёт картинку. Вторая вставляет её в центр страницы размера A4 и экспортирует результат в pdf файл.
convert -size 760x1088 xc:blue blue-test-rectangle.jpg convert blue-test-rectangle.jpg -gravity center -page A4 blue-test-rectangle.pdf
EXIF информация из оригинального файла $ exiftool 2015.06.09.jpg.orig ExifTool Version Number : 9.90 File Name : 2015.06.09.jpg.orig Directory : . File Size : 96 kB File Modification Date/Time : 2015:06:13 19:40:04+02:00 File Access Date/Time : 2015:06:13 19:40:15+02:00 File Inode Change Date/Time : 2015:06:13 19:40:04+02:00 File Permissions : rw-r--r-- File Type : JPEG MIME Type : image/jpeg JFIF Version : 1.01 Resolution Unit : inches X Resolution : 300 Y Resolution : 300 Image Width : 760 Image Height : 1088 Encoding Process : Progressive DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:4:4 (1 1) Image Size : 760x1088 Megapixels : 0.827
EXIF информация после очистки
$ exiftool 2015.06.09.jpg. ExifTool Version Number : 9.90 File Name : 2015.06.09.jpg Directory : . File Size : 96 kB File Modification Date/Time : 2015:06:14 01:43:50+02:00 File Access Date/Time : 2015:06:14 01:44:06+02:00 File Inode Change Date/Time : 2015:06:14 01:43:50+02:00 File Permissions : rw-r--r-- File Type : JPEG MIME Type : image/jpeg Image Width : 760 Image Height : 1088 Encoding Process : Progressive DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:4:4 (1 1) Image Size : 760x1088 Megapixels : 0.827
И вот две финальные команды которые приводят к нужному результату. Первая убирает EXIF информацию, вторая создаёт нужны pdf файл.
#!/bin/bash exiftool -all= $1 convert $1 -gravity center -page 2480x3508 -format pdf $1.pdf