Гурам GhostScript'а: разбор pdf на colour / grayscale (Как определить, какие страницы в документе цветные?)

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

Вот из этого ответа: https://stackoverflow.com/questions/641427/how-do-i-know-if-pdf-pages-are-color-or-black-and-white/28369599#28369599 я импользую single-line скрипт:

Shell

$ gs -o - -sDEVICE=inkcov file.pdf |tail -n +4 |sed '/^Page*/N;s/\n//'|sed -E '/Page [0-9]+ 0.00000 0.00000 0.00000 / d'
И получаю такой вывод:

Shell

see the file COPYING for details.
Processing pages 1 through 4.
Page 1 0.02235 0.02235 0.02235 0.02235 CMYK OK
Page 2 0.05565 0.05565 0.05565 0.05565 CMYK OK
Page 3 0.30620 0.30678 0.30781 0.26057 CMYK OK
Page 4 0.19103 0.19121 0.19121 0.14415 CMYK OK
Что не является тем, что мне необходимо: мне нужен конкретный вывод информации о том, какие страницы -- в CMYK, а какие -- Grayscale.
Подскажите, как можно в Юниксе понять, какие страницы в документе цветные, а какие монохромные?
Тестовый файл для скачивания: https://drive.google.com/file/d/1bXDqC0uJccluhBSYGG96AVJrRPUhrH8d/view?usp=sharing.
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19302
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение Bizdelnick »

В grayscale ненулевым будет только K, нет? То есть Ваш скрипт выводит все цветные страницы.
BTW тут звёздочка явно лишняя:

Код: Выделить всё

sed '/^Page*/N;s/\n//'
           ^ вот эта
И тут точки надо экранировать:

Код: Выделить всё

sed -E '/Page [0-9]+ 0\.00000  0\.00000  0\.00000  / d'
                      ^         ^         ^
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 651
ОС: debian, fedora (i3-wm)

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение olecya »

Думаю ход вашей мысли верен. Первые три столбца со значением 0 определяют монохромность, но это не отменяет CMYK
Накидала скрипт который пропускает все предупреждения:

Shell

gs -o - -sDEVICE=inkcov file.pdf | sed -rn '/^Page /h;/CMYK OK$/!b;H;x;s/\n(\s([^ ]*[1-9][^ ]*\s+){3})/\1/p'
Но как по мне лучше запускать команду с опцией -q и тупо считать страницы:

Shell

gs -q -o - -sDEVICE=inkcov file.pdf | awk '!/^ (0\.00000\s+){3}/ && sub(/^/, "Page "NR)'
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

Bizdelnick
Прислушиваюсь к вам, но делаю все как обезьянка, ибо BASH вообще не знаю:

Shell

gs -o - -sDEVICE=inkcov file.pdf |tail -n +4 |sed '/^Page/N;s/\n//'|sed -E '/Page [0-9]+ 0\.00000 0\.00000 0\.00000 / d'
Как оказалось, вывод не поменялся:

Shell

see the file COPYING for details.
Processing pages 1 through 4.
Page 1 0.02235 0.02235 0.02235 0.02235 CMYK OK
Page 2 0.05565 0.05565 0.05565 0.05565 CMYK OK
Page 3 0.30620 0.30678 0.30781 0.26057 CMYK OK
Page 4 0.19103 0.19121 0.19121 0.14415 CMYK OK
Вообще, конечно же, скрипт должен выводить не голые цифорки, а через запятуб цветные; и черно-белые страницы.
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19302
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение Bizdelnick »

olecya писала:
23.12.2020 10:12
Но как по мне лучше запускать команду с опцией -q и тупо считать страницы:
Согласен, у меня при обработке одного файла без -q вылезла такая бяка:

Shell

Page 1
Loading NimbusRoman-Regular font from /usr/share/ghostscript/9.27/Resource/Font/NimbusRoman-Regular... 4467520 2930289 8070464 6723310 4 done.
0.00000 0.00000 0.00000 0.12190 CMYK OK
SerW писал:
22.12.2020 23:23
мне нужен конкретный вывод информации о том, какие страницы -- в CMYK, а какие -- Grayscale.
Можно сделать так: gs -q -o - -sDEVICE=inkcov file.pdf | awk '{ n++; if ($1 == "0.00000" && $2 == "0.00000" && $3 == "0.00000") g = g " " n; else c = c " " n } END{ print "gray:" g; print "color:" c }'
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 651
ОС: debian, fedora (i3-wm)

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение olecya »

SerW писал:
23.12.2020 12:19
Как оказалось, вывод не поменялся:
Потому что у вас все чернила на страницах в цвете. Можно поэкспериментировать с определением rgb. Можете сравнить значения. Там где присутствуют картинки значения с десятыми долями, а там где нет то с сотыми.
SerW писал:
23.12.2020 12:19
скрипт должен выводить не голые цифорки, а через запятуб цветные; и черно-белые страницы.
Номера страниц(Значение 0.3 подобрать):

Код: Выделить всё

gs -q -o - -sDEVICE=inkcov file.pdf |
awk '
($1+$2+$3) > 0.3        {color = color (color?",":"") NR; next}
                        {grey = grey (grey?",":"") NR}
END                     {print "Color:", color; print "Grey:", grey}'

Shell

Color: 3,4
Grey: 1,2
SerW писал:
23.12.2020 12:19
ибо BASH вообще не знаю:
Тогда в одну строчку на всякий случай выложу:

Shell

gs -q -o - -sDEVICE=inkcov file.pdf | awk '$1+$2+$3 > 0.3 {color = color (color?",":"") NR; next}; {grey = grey (grey?",":"") NR}; END {print "Color:", color; print "Grey:", grey}'
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

olecya
Я использую ваш одностракавый код.
А вы не заметили, что 2 -- это цветная страница? : ]
Добавлено (18:34):
Bizdelnick
Вывод:

Shell

gray:
color: 1 2 3 4
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19302
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение Bizdelnick »

SerW писал:
24.12.2020 18:33
Bizdelnick
Вывод:

Shell

gray:
color: 1 2 3 4
Это Вы к чему? Что-то не так?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

Bizdelnick
Дык, там 1-ая страница черно-белая!
Добавлено (19:15):
Я файл обновил -- добавил одну пустую страницу -- вы можете подправить скрипт, чтобы он также выводил и пустые страницы, и также подсчитывал количество страниц каждого из 3-ех типов? : ))
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19302
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение Bizdelnick »

SerW писал:
24.12.2020 18:54
Дык, там 1-ая страница черно-белая!
Странно, на моих файлах работало корректно. Ну тогда используйте вариант olecya, только порог пониже поставьте.
SerW писал:
24.12.2020 18:54
вы можете подправить скрипт, чтобы он также выводил и пустые страницы, и также подсчитывал количество страниц каждого из 3-ех типов? : ))
Мне это неинтересно. Объяснить решение, чтобы Вы смогли его адаптировать под свои нужды — это пожалуйста, а если хотите готовое решение по Вашему ТЗ — с этим лучше в раздел Работа. За деньги кто-нибудь и сделает.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

Bizdelnick
Смотрите, у меня есть интерес создать свободную альтернативу для http://www.kdmsoft.ru/autoeditorpdf.html .
То есть я могу составлять технические требования к скриптам командной строки для GS, которые исполняет эта утилита и ее прародительница.
Но я не программист.
Если у вас имеется желание обернуть это дело, то настаиваю на Qt.
В общем, предлагаю заняться заинтересованным; коллективный разум всегда умнее.
Если нужно финансирование — я его могу предоставить, но оно будет мое личное, то бишь скудное.
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

Помимо этого, но то, конечно ж, уже для другого треда разговор, очень интересно на базе https://www.fonts-online.ru/ и NAPS 2 сформировать онлайн-утилиту по распознаванию гарнитур; особо необходимо для кириллицы!
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

Есть интерес к этим двум моим заявкам?
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

olecya
Приветствую! Вот есть такая книга (Книга Маленькие герои большой войны (Мариам).pdf): https://drive.google.com/drive/u/1/folders/11Sg9mnfTIhgdXf-DJ2L3cV7ZLlerPYwr.
Как мне ее разрезать постранично? То есть, сделать из каждой страницы горизонтальной 2 вертикальные?
Там по книге видно, что разрез предполагается.
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

Вот такое нагуглил: https://ubuntuforums.org/showthread.php?t=1908333 .
Сергей Ш. » DragonSerW.RU
Спасибо сказали:

Аватара пользователя
SerW
Сообщения: 402
ОС: macOS& Fedora Workstation Latest

Re: Гурам GhostScript'а: разбор pdf на colour / grayscale

Сообщение SerW »

SerW писал:
04.09.2021 15:38
olecya
Приветствую! Вот есть такая книга (Книга Маленькие герои большой войны (Мариам).pdf): https://drive.google.com/drive/u/1/folders/11Sg9mnfTIhgdXf-DJ2L3cV7ZLlerPYwr.
Как мне ее разрезать постранично? То есть, сделать из каждой страницы горизонтальной 2 вертикальные?
Там по книге видно, что разрез предполагается.
Цитирую https://forum.ubuntu.ru/index.php?topic=315585.msg2454270#msg2454270:
Может пригодится кому на будущее. Это можно сделать с помощью mupdf-tools.
Команда:

Код: Выделить всё

mutool poster -x 2 input.pdf output.pdf
.
Правда, для некоторых файлов, нужно писать не "-x", а "-y". Почему-то иногда страницы режутся по горизонтали, а не по вертикали.
Сергей Ш. » DragonSerW.RU
Спасибо сказали: