Инструмент командной строки Linux для подсчета непустых страниц в файле PDF

С помощью pdfinfo, я могу легко подсчитать количество страниц в PDF-файле, включая пустые страницы, например, перед главой. Что, если я хочу подсчитать все непустые пакеты — есть ли инструмент для этого?

Страницы, которые кажутся пустыми при просмотре человеком, могут не быть пустыми при просмотре машиной. Многие производители PDF-файлов стараются не добавлять пустые страницы: они стараются, чтобы это не произошло случайно. Когда нужно добавить пустую страницу, обычно к пустой странице что-то добавляют (может быть что угодно, стандартного способа сделать это нет). Это затрудняет обнаружение пустых страниц программным обеспечением. Вам нужно будет отобразить каждую страницу, а затем проверить, нет ли видимых элементов. Это требует много процессорного времени.

Ответы (1)

Если под «пустой страницей» вы имеете в виду: при печати это не вызовет следов тонера/чернил на странице, вы можете использовать новое inkcovустройство Ghostscript, которое сообщает о покрытии чернилами для каждой страницы. (Сообщение об окончательных результатах может быть немного медленным, потому что необходимо виртуально отображать каждую страницу, чтобы вычислить покрытие чернилами) :

Пример команды:

$> gs -o -  -sDEVICE=inkcov sample2.pdf

Processing pages 1 through 8.
Page 1
 0.00000  0.00000  0.00000  0.02231 CMYK OK
Page 2
 0.02363  0.02363  0.02363  0.02363 CMYK OK
Page 3
 0.02527  0.02527  0.02527  0.00000 CMYK OK
Page 4
 0.03322  0.03322  0.03322  0.03322 CMYK OK
Page 5
 0.00000  0.00000  0.00000  0.03413 CMYK OK
Page 6
 0.00000  0.00000  0.00000  0.01984 CMYK OK
Page 7
 0.13274  0.13274  0.13274  0.03355 CMYK OK
Page 8
 0.00000  0.00000  0.00000  0.00000 CMYK OK

Значения представляют собой целые числа в диапазоне от 0..1, где значение 1 представляет собой 100% покрытие чернилами (для всех пикселей на странице). Следовательно, приведенный выше результат означает:

Страница 8 при рендеринге не использует чернила, поэтому она «пустая».

Это не означает, что эта страница действительно пуста при просмотре в программе просмотра PDF. Чтобы перечислить, но только два примера:

  1. Он может использовать белый текст на белом фоне, и этот текст может быть выделен и скопирован, когда PDF-файл отображается на экране. Однако распечатка ничего не показала бы.
  2. Страница может содержать «слои» (или «дополнительные группы содержимого» , /OCGэлементы), где один слой настроен для отображения на экране, а другой (пустой) слой настроен для использования при печати.