Руководство по допиливанию для новичка- от новичка

Автор el guahiro, июля 26, 2015, 20:02:01

« предыдущая - следующая »

qqq

марта 31, 2021, 18:23:45 #1665 Последнее редактирование: марта 31, 2021, 18:25:34 от qqq
Коллеги, благодарю за помощь. Предлагаю скрипт, с помощью которого можно реализовать в thunar просмотр файлов различных форматов.
В моем примере - это doc, docx, odt.
Особое действие задается командой xfce4-terminal -H -e "view.sh %f", условия появления - *.docx;*.odt;*.doc
Я себе задал для просмотра клавишу F3, ностальжи однако.

#!/bin/bash
IFS=$'\#'
filename=$1
if [ "${filename##*.}" = "docx" ]; then
docx2txt.pl < $filename | more
fi

if [ "${filename##*.}" = "odt" ]; then
odt2txt $filename | more
fi

if [ "${filename##*.}" = "doc" ]; then
antiword -f -w 0 $filename | more
fi

el guahiro

апреля 01, 2021, 01:42:05 #1666 Последнее редактирование: апреля 09, 2021, 11:44:31 от el guahiro
Цитата: qqq от марта 31, 2021, 18:23:45В моем примере - это doc, docx, odt.
Предлагаю расширить скрипт, взяв утилиты вывода содержимого файлов в терминал, основываясь на готовую наработку от el - скрипт ищи_pro2:
#!/bin/bash
# Created by el guahuro, elguahiro@gmail.com.
#This script performs a recursive search for the contents of files in all popular office formats.
echo -e "\n
Поиск слова во всех файлах этой папки, введите запрос \n
Результаты поиска по введенному далее запросу \n"
echo -e "\033[1m\033[38;5;11m"Чтобы открыть найденный файл, выдели название этого файла и закрой терминал"\033[0m"


echo -e "\033[37;1;41m  "СЛОВО:" \033[0m"
read response

find . -iname "*.doc" |
while read i ; do catdoc "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.docx" |
while read i ; do docx2txt < "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.xls" |
while read i ; do xls2csv "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.xlsx" |
while read i ; do xlsx2csv "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.pdf" |
while read i ; do pdftotext -q -layout "$i" - | less |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.odt" |
while read i ; do odt2txt "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.odp" |
while read i ; do odt2txt "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.ods" |
while read i ; do odt2txt "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.rtf" |
while read i ; do catdoc "$i" |
rg -i "$response" && echo -e "\033[37;1;41m  "$(realpath "$i")"\033[0m" ; done

find . -iname "*.csv" |
while read i ; do enconv "$i"; done

rg -i "$response"

echo -e "\033[1m\033[38;5;11m"Время поиска $SECONDS секунд"\033[0m"

Сей скрипт был написан аффтором в глубокой тоске по поводу отсутствия нормального полнотекстового поиска в Linux, ежедневно тестируется уже длительное время и показывает результаты, лучшие от аналогов. К тому же не требует индексации ФС.
Работа вариантов скрипта описана здесь и здесь
Видео по работе скрипта:
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

qqq

апреля 02, 2021, 17:02:23 #1667 Последнее редактирование: апреля 03, 2021, 03:38:32 от el guahiro
Цитата: el guahiro от апреля 01, 2021, 01:42:05Предлагаю расширить скрипт
Вот что получилось (под Альт Linux, под Xubuntu двумя постами ниже):
#!/bin/bash
IFS=$'\#'
filename=$1

if [ "${filename##*.}" = "docx" ]; then
docx2txt.pl < $filename | less
fi

if [ "${filename##*.}" = "odt" -o "${filename##*.}" = "ods" -o "${filename##*.}" = "odp" ]; then
odt2txt --width=80 $filename | less
fi

if [ "${filename##*.}" = "doc" ]; then
antiword -f -w 0 $filename | less
fi

if [ "${filename##*.}" = "rtf" -o "${filename##*.}" = "ppt" ]; then
catdoc $filename | less -s
fi

if [ "${filename##*.}" = "xls" ]; then
xls2csv $filename | less
fi

if [ "${filename##*.}" = "xlsx" ]; then
python3 /usr/local/lib/python3/site-packages/xlsx2csv.py $filename | less
fi

if [ "${filename##*.}" = "txt" -o "${filename##*.}" = "md" ]; then
cat $filename | less
fi

if [ "${filename##*.}" = "png" -o "${filename##*.}" = "jpg" ]; then
w3m $filename
fi

if [ "${filename##*.}" = "html" ]; then
html2text $filename | less
fi

if [ "${filename##*.}" = "pdf" ]; then
pdftotext -q -layout $filename - | less
fi

Требуются утилиты docx2txt, odt2txt, antiword, catdoc, скрипт питона xlsx2csv (https://github.com/dilshod/xlsx2csv), xls2txt (у меня в альтах ставится вместе с catdoc), html2text, pdftotext и w3m-img (для картинок, но это уже не очень удобно)

Использование команды less при просмотре удобно тем, что в ней реализована функция поиска по тексту.
В итоге просмотр очень быстрый, все открывается со скоростью открытия терминала. Годится не только для слабых компов, но и для нормальных, у которых нет ssd.

el guahiro

апреля 03, 2021, 02:47:15 #1668 Последнее редактирование: апреля 03, 2021, 03:21:43 от el guahiro
Цитата: qqq от апреля 02, 2021, 17:02:23Вот что получилось:
Я бы добавил после less:
| sed '/\S/!d; s/  / /g;s/  / /g; s/  / /g; s/,,/ /g'так вывод будет компактней.
А так скрипт годный. Для некоторых ситуаций (например, когда открытие офисного файла в стандартном редакторе фиксируется  и нежелательно) даже очень.
Правда была раньше для предпросмотров уже программка, я о ней писал на этом форуме, называется  Gloobus , с 2013г не поддерживается, но может и сейчас запустится на Альтах, на Астре с её древней пакетной базой запустится точно...... 
Но велосипед мы / Вы изобрели хороший, с возможностью дальнейшего прогресса. :)
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

el guahiro

апреля 03, 2021, 03:33:16 #1669 Последнее редактирование: апреля 03, 2021, 03:36:56 от el guahiro
Поскольку форум всё же про Xubuntu, указанный выше уважаемым qqq скрипт под Xubuntu будет иметь следующий вид:
#!/bin/bash
IFS=$'\#'
filename=$1

if [ "${filename##*.}" = "docx" ]; then
docx2txt < $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "odt" -o "${filename##*.}" = "ods" -o "${filename##*.}" = "odp" ]; then
odt2txt --width=80 $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "doc" ]; then
antiword -f -w 0 $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "rtf" -o "${filename##*.}" = "ppt" ]; then
catdoc $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "xls" ]; then
xls2csv $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "xlsx" ]; then
xlsx2csv $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "txt" -o "${filename##*.}" = "md" ]; then
cat $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "png" -o "${filename##*.}" = "jpg" ]; then
w3m $filename
fi

if [ "${filename##*.}" = "html" ]; then
html2text $filename |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi

if [ "${filename##*.}" = "pdf" ]; then
pdftotext -q -layout $filename - |less | sed '/\S/!d; s/  / /g;s/  / /g;s/  / /g; s/,,/ /g'
fi
Какие утилиты надо доставить, можно понять из команд. Измождённый за неделю обалдуями-проектировщиками el guahiro сделать этого уже не в силах. Как-нибудь сами.

Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

el guahiro

апреля 05, 2021, 04:16:48 #1670 Последнее редактирование: апреля 10, 2021, 13:05:49 от el guahiro
Приводим в порядок текст, вставленный в документ из других программ.
Этот текст написан для продуктивной работы в Libreoffice. Необходим например студентам, чтобы скачанный в сети скан превратить в курсовую.
В моей же работе часто бывает так, что необходимо создать файл доклада или презентации Libreoffice, а в наши руки попал документ, форматирование в котором оставляют желать много лучшего - это либо документ, сконвертированный из MS Word в PDF, либо текст, скопированный из браузера с неподходящей нам разметкой, либо текстовый файл, переносы строк в котором отнюдь не обозначают новых абзацев. Либо это просто текст с распознанного скана с хорошим нужным  текстом.
Как вытаскивать текст из файлов PDF, неоднократно писалось на на этом форуме, в том числе в этой теме. Можно например открыть файл в MasterPdf Editor, Foxit Reader, Evince или Okular и скопировать текст, можно извлечь в командной строке с помощью различных утилит, например pdftotext.
Самым простым решением наверное было бы отправить PDF в Fine Reader. Но Fine Reader под Linux не работает и не собирается. Я отправлял в прошлом году в Fine Reader запрос, мне ответили что разработка под Linux не планируется. Можно купить программу InstallAble2ExtractPro у https://www.investintech.com/. Но она стоит 10 000 рублей на наши деньги, что не мало, если платить из своего кармана. К тому же у меня она в Xubuntuт18.04 не установилась, сказав про неразрешимые зависимости. Не больно то и хотелось.
В итоге аффтор этих строк озадачился автоматизацией процесса создания *.docx или *.odt из PDF, а заодно из *.txt и *.html. Для этого прибегнем к  исправлению текста с помощью функции libreoffice «Найти и Заменить».
Для начала необходимо удалить пробелы в начале и конце строк, заменив при помощи  диалога «Найти и заменить» «^[ \s]+|[ \s]+$» на пустое место. Иногда несколько раз, если пробелов много.
Далее, первая часть из изложенного материала от автора Roman Kuznetsov взята отсюда http://antilibreoffice.blogspot.com/2017/11/blog-post.html:
Замена множества пробелов идущих подряд на один:
a. В диалоге «Найти и заменить» в строку «Найти» вбиваем два пробела   #заменил оригинал от Roman Kuznetsov по результатам тестирования.
b. В строку «Заменить» вбиваем " *" (пробел и звезду без кавычек)
c. Далее раскрываем «Другие параметры» и отмечаем галочкой опцию «Регулярные выражения»
d. Нажимаем на кнопку «Заменить все».
Делаем раза два-три.
Замена знака разрыва строки на знак абзаца:
a. В диалоге «Найти и заменить» в строку «Найти» вбиваем \n
b. В строку «Заменить» также вбиваем \p
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
При обратной замене - поменять выражения
Замена нескольких подряд идущих знаков абзаца (пустые строки) на один знак абзаца:
a. В диалоге «Найти и заменить» в строку «Найти» вбиваем ^$
b. В строку «Заменить» ничего не вбиваем, оставляем её пустой.
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
-----------------
Далее рецепты от el guahiro.
1  Таблицы.
Таблицы хорошо распознаёт сервис Free Online OCR https://www.onlineocr.net/. Кушает не более одной странички за раз.
2  Текст.
Текст нам попадается двух видов: Нумерованные(маркированные) списки и Абзацы. Внутри одного абзаца или списка попадаются лишние знаки абзаца, и их надо убрать.
2.1  Нумерованные/маркированные списки
Выделяем список. В диалоге «Найти и заменить» ставим галку «Только текущее выделение»
a. Далее в диалоге «Найти и заменить» в строку «Найти» вбиваем \p\d
\d здесь обозначает - «любая цифра».
b. В строку «Заменить» вбиваем \n&
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
После этого внутри выделения элементы списка отделяются друг от друга принудительным разрывом строки.
Далее, не снимая выделения:
a. Далее в диалоге «Найти и заменить» в строку «Найти» вбиваем \p
b. В строку «Заменить» вбиваем пробел
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
Потом, не снимая выделения, меняем принудительный разрыв строки обратно на абзац:
a. В диалоге «Найти и заменить» в строку «Найти» вбиваем \n
b. В строку «Заменить» также вбиваем \p
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
Для макрированного списка приблизительно тот же алгоритм, только в строку «Найти» вбиваем \p и символ маркированного списка (кружочек, квадратик, галочка и т.п.)
2.2 Абзацы
Можно просто выделять абзацы, заменяя знак абзаца на пробел внутри него:
Выделяем абзац. В диалоге «Найти и заменить» ставим галку «Только текущее выделение»
a. Далее в диалоге «Найти и заменить» в строку «Найти» вбиваем \p
b. В строку «Заменить» вбиваем пробел
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
Потом переходим к следующему абзацу, десятому...сотому и т.д.
Но если текст большой, то на это уйдёт много времени. Поэтому способ второй - отделяем абзацы друг от друга по признаку: «точка+знак абзаца=конец абзаца». Можно этот способ использовать и для списков.
Выделяем блок абзацев, затем:
a. Далее в диалоге «Найти и заменить» в строку «Найти» вбиваем [.]\p
b. В строку «Заменить» вбиваем .\n
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
Аналогично сделать для [!] и [;]
Далее, не снимая выделения:
a. Далее в диалоге «Найти и заменить» в строку «Найти» вбиваем \p
b. В строку «Заменить» вбиваем пробел
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
Абзацы сгрупировались как надо, без лишних переносов строк.
Потом, не снимая выделения, меняем принудительный разрыв строки обратно на абзац:
a. В диалоге «Найти и заменить» в строку «Найти» вбиваем \n
b. В строку «Заменить» также вбиваем \p
c. «Регулярные выражения» также должны быть активированы
d. Нажимаем на кнопку «Заменить все».
Иногда надо ещё убрать табуляцию:
Найти: \t
Заменить на: - оставить пустое окошко

На этом всё, надеюсь, и уверен, многим поможет. Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

xub

Приветствую, с ударным продвижением весны Вас El!

Цитата: el guahiro от апреля 05, 2021, 04:16:48Самым простым решением наверное было бы отправить PDF в Fine Reader.

У меня есть FR ,,12-ой модели😇" проект мне оплатил в своё время её покупку. В виртуальной Windows установлена.

Даже при сохранении форматирования, если делать всё качественно без ручной правки не обойтись😞...

Стратегию выбрать вообще тяжело когда из пяти разных источников нужно создать один документ.

Часто приходилось превращать всё в обычный текст и форматировать заново😞...

Приветствую,  с ударным  продвижением весны  Вас El!  quote author  el
guahiro link msg 12827 date 1617574608 Самым простым решением наверное
было бы отправить PDF в Fine Reader. quote У меня есть FR 12 ой модели
проект  мне оплатил  в своё  время её  покупку. В  виртуальной Windows
установлена.  Даже  при  сохранении форматирования,  если  делать  всё
качественно  без ручной  правки не  обойтись Стратегию  выбрать вообще
тяжело когда  из пяти разных  источников нужно создать  один документ.
Часто  приходилось  превращать всё  в  обычный  текст и  форматировать
заново
Рождались и смешные 🢁🢁, фактически не нашедшие широкого применения идеи , вроде того, что
выше...😇 С кириллицей это не просто проделать, но способ есть, через транслит, даже французский не все консольные программы ,,берут", но тоже есть способ делать прямоугольники...

2021 Apr 05; 11:17 PM
При ответах прошу учитывать возможную существенную разницу во времени, мой часовой пояс (GMT-4) Eastern Daylight Time...

el guahiro

апреля 06, 2021, 15:58:29 #1672 Последнее редактирование: апреля 10, 2021, 03:16:22 от el guahiro
Цитата: xub от апреля 06, 2021, 09:17:47Часто приходилось превращать всё в обычный текст
Так я и пишу, что надо всё в обычный текст, потом txt превращаем в docx (или odt) с форматированием при конвертации прямо в консоли> потом чистка автозаменой> потом добрасываем картинки из PDF и таблички, распознанные через Free Online OCR>потом открываем и форматируем загловки>получаем файл, разбитый по нумерации и абзацы, с картинками и табличками. Когда умеешь, то превратить боршюру PDF в 20 листов в доклад формата docx (или odt) - полчаса с перекурами.
и да, в предыдущем посте я дал рецепт ручной чистки текста. Для автоматизации у el guahiro существует команда. Причешу - опубликую.

PS. С проблемами кодировки не сталкивался уже года два. Наверное потому, что допилил всё на уровне ОС.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

qqq

Цитата: xub от апреля 06, 2021, 09:17:47Часто приходилось превращать всё в обычный текст
Очень интересно! Прошу поделиться опытом. Я сейчас пришел к тому, что пишу тексты в формате markdown, напилил нужные мне сниппеты и скрипты  для упрощения работы с таблицами, сносками, заголовками в geany, сделал эталонные шаблоны файлов по которым конвертирую в нужный мне odt с помощью pandoc. Получается все очень аккуратно и единообразно

xub

Приветствую!

Да ничего особенного qqq... Всё зависит от того какие тексты создаются. При написании ,,из головы" редактор можно выбрать сразу и форматировать сразу. Но ,,из головы" пишут журналисты и собственно писатели без кавычек, а также графоманы😇.

Проблемы начинаются при редактировании-комбинировании, а также переводе. Потому тут легче на примерах.

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

Я большую часть канадской жизни в Квебеке прожил, потому французский мне даже роднее.
Я не был штатным переводчиком просто по необходимости выполнял для себя или по команде начальства такую работу.

Я попытаюсь на примере английского и русского потому что французский учат сейчас по необходимости или прихоть такая, короче уровень его как общего языка сильно понизился. Т.е. Вы можете его и не использовать никак. А русско-английский, думаю, будет понятнее.

Тестовый текст: https://spaces.hightail.com/receive/CXrSE4P4dn

Как заставить Google переводить всё что открывается в браузере это отдельный вопрос.Там не сложно.

Разместить две страницы на одном листе pdf, это тоже не сложно, одна длинная команда в терминале.

Скопировав текст оригинала и текст перевода и применив скрипт получаем ,,полуфабрикаты" для дальнейшей работы. Скрипт тоже не шедевр, обыкновенная самоделка.

Вид в ranger'e и собственно текстовые файлы:
https://spaces.hightail.com/receive/oJnicW7mvA

Считайте это вступлением, если возникнет необходимость продолжим, устал я сегодня, выполняя прихоти жены по дизайну газона перед домом, клумбочки-цветочки, а то не дай бог будет хуже чем у соседей😇.

2021 Apr 06; 10:35 PM



При ответах прошу учитывать возможную существенную разницу во времени, мой часовой пояс (GMT-4) Eastern Daylight Time...

el guahiro

апреля 10, 2021, 03:24:24 #1675 Последнее редактирование: ноября 07, 2021, 14:57:07 от el guahiro
Действие ПКМ Thunar "PDF2DOCX".
Thunar custom action PDF2DOCX
Превращает в DOCX только PDF с текстовым слоем. Как создать в PDF этот самый текстовый слой (OCR в один клик) я писал чуть ранее в этой теме.
Команда:
pdftotext -q -nopgbrk -layout %n ; sed -i 's/[^[:print:]]//' "$(basename -s .pdf %n)".txt; sed -i -r 's/\xC2\xA0/ /g' "$(basename -s .pdf %n)".txt; sed -i -r 's/^[  \t]*|[ \t]*$//' "$(basename -s .pdf %n)".txt ; sed -i -r 's/  */ /g' "$(basename -s .pdf %n)".txt ; sed -i -r '/^\s*$/d' "$(basename -s .pdf %n)".txt ;sed -i -r 's/^[[:upper:]].*/♫&/g'  "$(basename -s .pdf %n)".txt ; sed -i -r 's/[[:upper:]]$/&♫/' "$(basename -s .pdf %n)".txt ;  sed -i -r -z 's/[.]\n|[;]\n|[:]\n|[?]\n|[!]\n/&♫/g' "$(basename -s .pdf %n)".txt; sed -i -r 's/^[0-9]|^[а-я]\)|^[-] /♫&/g' "$(basename -s .pdf %n)".txt ; sed -i -r -z 's/\n/ /g' "$(basename -s .pdf %n)".txt ; sed -i -r -z 's/♫/\n/g' "$(basename -s .pdf %n)".txt ; sed -i -r '/^\s*$/d' "$(basename -s .pdf %n)".txt ; sed -i -r 's/^[  \t]*//;s/[ \t]*$//' "$(basename -s .pdf %n)".txt ; sed -i -r  's/[0-9]$|[0-9]\.$/&♫/g' "$(basename -s .pdf %n)".txt ; sed -i -r -z 's/♫\n|♫\r/ /g' "$(basename -s .pdf %n)".txt ; sed -i 's/--|--/-/gi' "$(basename -s .pdf %n)".txt ; sed -i 's/  */ /gi' "$(basename -s .pdf %n)".txt ; abiword --to=docx "$(basename -s .pdf %n)".txt; rm "$(basename -s .pdf %n)".txt; mv "$(basename -s .pdf %n)".docx текст.."$(basename -s .pdf %n)".docxЧтобы написать это, пришлось побороть исконно присущий человеку страх перед sed.
Если у вас PDF, конвертированный с иного приложения (не скан, не OCR), то вместо
pdftotext -q -nopgbrk -layout %nнужно поставить
mutool convert -o "$(basename -s .pdf %n)".txt %nу меня пояснительные записки формата A3 с двумя колонами текста команда с mutool отлично конвертирует, не перемешивая колонки.
Расшифровка команд по отдельности:
sed -i 's/[^[:print:]]//' %n  # удаляет непечатаемые символы
sed -i -r 's/\xC2\xA0/ /g' %n # что-то с переносом строки, вовремя не записал.
sed -i -r 's/^[  \t]*//;s/[ \t]*$//' %n #удаляет пробелы в начале и конце строки
sed -i '$d' %n  # удаляет пустой абзац в конце файла
sed -i -r 's/  */ /g'  %n  # заменяет двойные пробелы на один
sed -i -r  's/[.]\n/&♫/g' %n # заменяет после точки !!! -z надо!!!
sed -i -r -z 's/[;]\n/&♫/g' %n  # заменяет после точки с запятой !!! -z надо!!!
sed -i -r -z 's/[:]\n/&♫/g' %n # заменяет после двоеточия !!! -z надо!!!
sed -i -r -z 's/[!]\n/&♫/g' %n # заменяет после восклицательного знака  !!! -z надо!!!
sed -i -r -z 's/[?]\n/&♫/g' %n # заменяет после вопросительного знака  !!! -z надо!!!
sed -i -r 's/^[0-9]/♫&/g' %n  # вставляет перед цифрой !!! -z не надо!!!
sed -i -r 's/^[а-я]\)/♫&/g' %n  # вставляет перед буквой со скобкой типа а) б) или d)  !!! -z не надо!!!
sed -i -r 's/^[-] /♫&/g' %n  # вставляет перед начальным тире = маркером списка !!! -z не надо!!!
sed -i -r -z 's/\n/ /g' %n  #Удаляет все переводы строки !!! -z надо!!!
В итоге меняем ♫ наперевод строки:
sed -i -r -z 's/♫/\n/g' %n  !!! -z надо!!!
sed -i -r '/^\s*$/d' %n # удаляем лишние переводы строки
sed -i -r 's/^[  \t]*//;s/[ \t]*$//' %n
убираем висящие номера (цифры нумерации как отдельный абзац)
sed -i -r  's/[0-9]$|[0-9]\.$/&♫/g' %n  # заметим, что | здесь ИЛИ
 sed -i -r -z 's/♫\n|♫\r/ /g' %n  # заменяем подстановку на пробел
Чистим
sed -i 's/--/-/gi' %n
sed -i 's/  */ /gi' %n  # заменяет двойные пробелы на один
sed -i '$d' %n  # удаляет пустой абзац в конце файла
Символ  ♫ в скрипте применил, т.к. очень много символов в sed имеет какое-то значение в регулярках. Этот- точно нет. Да и вообще прикольно иметь bash скрипт с таким значком.
Команда работает очень быстро. Формирует абзацы автоматически.
Чтобы работало, необходимо установить pdftotext и abiword. В принципе, можно было написать команду и на Libreoffice, но тогда при  открытом в GUI Libreoffice скрипт не работает.
Услопия появления: галка на "Другие файлы", маска: *.pdf;*.PDF
Иконка любая.
Видео как это работает
PS. Иногда (редко) где-то не получается с новой строки нумерация. В этом случае в Libreoffice ищем её регуляркой типа:
[0-9]+\.[0-9]+\.*[0-9]*и делаем с новой строки.

Искркнне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

el guahiro

Готовясь к очередному (точнее первому в году) рывку в дебри нашей необъятной, т.е на объект строительства, нашёл у себя два скрипта для сжатия картинок (фоток, сканов) "на месте", без интернета, SMS и регистрации.
picture_SMALLER_2.5x.sh:
#! /bin/bash
#from el guahiro, USSR
IFS=$'\#'
for i in "$@" ; do convert  "$i" --strip -interlace Plane -gaussian-blur 0.05 -quality 85%  "$i".2 ; touch -r "$i" "$i".2 ; mv -v "$i".2 "$i" ; done | zenity --progress --width=400 --height=100 --title="Уменьшаю изображение" --text "работаю." --auto-close --pulsate;notify-send 'Готово!'
picture_SMALLER_4.5x.sh:
#! /bin/bash
#from el guahiro, USSR
IFS=$'\#'
for i in "$@" ; do convert  "$i" -filter Triangle -define filter:support=2 -unsharp 0.25x0.25+8+0.065 -dither None -posterize 136 -quality 50 -define jpeg:fancy-upsampling=off -define png:compression-filter=5 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB -strip  "$i".2 ; touch -r "$i" "$i".2 ; mv -v "$i".2 "$i" ; done |zenity --progress --width=400 --height=100 --title="Уменьшаю изображение" --text "работаю." --auto-close --pulsate;notify-send 'Готово!'
Сжимают, соответственно в 2,5 и 4,5 раза. Пакетная обработка возможна.
Помогает, например, оперативно сжать фотоколлекцию, или чертежи в tiff.
Кто любит GUI, тот может воспользоваться утилитой IMAGINE, есть Appimage, т.е запустится в любой системе.

Засим прощаюсь. Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

xub

Удачи Вам el guahiro, USSR ну и флажок вот этот в руки, как говорят в народе,  :smile: !



Возвращайтесь без потерь!😇 Мы не всё ещё обсудили!

2021 Apr 12; 08:47 PM
При ответах прошу учитывать возможную существенную разницу во времени, мой часовой пояс (GMT-4) Eastern Daylight Time...

el guahiro

Ранее на форуме я писал про настройку тачпада с помощью программы GSynaptics
и был очень неправ.
Пару раз наблюдал у себя как мышь в ноуте "взбесилась" - раз в месяц множественные фантомные нажатия, открытие сотни окон и т.п. Приходилось ноут отключать кнопкой, пока не догадался отключить драйвер Synaptics.

Может кому-то пригодится.
Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X

el guahiro

Хорошие обои для xfce https://wallpaperaccess.com/4k-minimalist.
Особенно для девайсов с хорошим разрешением, коих всё больше.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions
Рекомендации для граждан у условиях гуманитарной катастрофы https://goo-gl.me/abV3X