Автор Тема: Мои наработки по манипуляциям с PDF (собирал по всему Инету :-)  (Прочитано 1943 раз)

Оффлайн SerW

  • Участник
  • *
  • Сообщений: 461
    • Вперед, в Интернет!
Вот эта страница выстраданами годами изучения вопросов по всяческим манипуляциям с .pdf: https://dragonserw.ru/wiki:pdf.
В основном там установка апплетов -- для Федоры и HomeBrew, но у кого иные системы -- поменять 'dnf' на 'apt-get' труда не составит ))
Приветствую доплнения от коммьюнити, поэтому вы можете треде писать, что можно было добавить на мою страницу )
dragonserw.ru/wiki:basealt

Оффлайн Olej

  • Участник
  • *
  • Сообщений: 201
эта страница выстраданами годами изучения вопросов по всяческим манипуляциям с .pdf
Интересно, полезно, но ... маловразумительно.  :-o

Оффлайн kessys

  • Участник
  • *
  • Сообщений: 1 055
В принципе все умеет pdf24 и делается быстро. Но png  из pdf врятли будет png
О подпись)
Жизнь с kde не так плоха, Но без ssd, это жестоко грустно.

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 618
Вот эта страница выстраданами годами изучения вопросов по всяческим манипуляциям с .pdf
Не много же вы выстрадали за годы...

В принципе все умеет pdf24 и делается быстро. Но png  из pdf врятли будет png
Именно png и получится. А накой в линуксе виндовый софт? Своего навалом.

Если именно png, то это не только с помощью ImageMagick можно. Консольные утилиты (и их не одна есть) хороши, когда требуется массовое однотипное преобразование (например надо преобразовать полтора миллиона pdf-ок). А если одну-две, тогда проще просто открыть и экспортировать в тот же png с помощью LibreOffice, Inkscape, Scribus или Gimp. К тому же там можно и какие-либо изменения-фильтры использовать (при необходимости). Да и выходных форматов много — растровых в Gimp, помимо растровых есть и векторные в LibreOffice, Inkscape и Scribus. Если нужен svg, тогда можно просто открыть в Atril и распечатать в svg.
Никаких, ни малейших проблем с этим нет, чтобы использовать чужеродный виндовый софт, или предоставлять допуск к документам посторонним используя что-нибудь онлайново-облачное.
« Последнее редактирование: 12.03.2023 06:50:24 от stranger573 »

Оффлайн Olej

  • Участник
  • *
  • Сообщений: 201

Оффлайн Olej

  • Участник
  • *
  • Сообщений: 201
Если именно png, то это не только с помощью ImageMagick можно. Консольные утилиты (и их не одна есть) хороши, когда требуется массовое однотипное преобразование (например надо преобразовать полтора миллиона pdf-ок). А если одну-две, тогда проще просто открыть и экспортировать в тот же png с помощью LibreOffice, Inkscape, Scribus или Gimp. К тому же там можно и какие-либо изменения-фильтры использовать (при необходимости). Да и выходных форматов много — растровых в Gimp, помимо растровых есть и векторные в LibreOffice, Inkscape и Scribus. Если нужен svg, тогда можно просто открыть в Atril и распечатать в svg.
Не всё оно так гладко с форматом PDF (форматами! там есть разнообразие)... Особенно если PDF - кирилические, русскоязычные: редактирование кирилического PDF.
В общем случае это достаточно гадкое занятие.

P.S. Если кто может предложить что-то более-менее внятное к тем ... мытарствам с PDF, что описаны по ссылке - был бы очень признателен.
P.P.S. ... только ... любые "гениальные" решения и инструменты "из винды" - чур, не предлагать.  ;-D

« Последнее редактирование: 12.03.2023 19:32:07 от Olej »

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 618
Не всё оно так гладко с форматом PDF (форматами! там есть разнообразие)... Особенно если PDF - кирилические, русскоязычные
Разнообразие есть, конечно. Вот только у этого разнообразия есть две стороны: проблема с программой/программами, которыми пользуетесь, или криво сделан файл. Использование индесигнов и прочих высокооплачиваемых инструментов от этого не спасает.
qpdf --check id_example.pdf
checking id_example.pdf
PDF Version: 1.6
File is not encrypted
File is linearized
ERROR: linearized file contains an uncompressed object after a compressed one in a cross-reference stream
ERROR: part 8 is empty but nshared_total > nshared_first_page
WARNING: object count mismatch for page 0: hint table = 113; computed = 17
WARNING: page 0 has shared identifier entries
WARNING: page 0: shared object 18: in hint table but not computed list
Кстати, проблема не обязательно в использовании формы, линеаризация pdf при весьма сомнительной полезности слишком часто вызывает проблемы.

P.S. Если кто может предложить что-то более-менее внятное к тем ... мытарствам с PDF, что описаны по ссылке - был бы очень признателен.
   Как вы там уже делали — открываете в LO, заполняете, печатаете/экспортируете в pdf-файл. Для заполнения этого достаточно. В подобных файлах много раз так делал, вопросов не возникало. Кстати, в этом случае в pdf-ке и форм никаких не надо.
   Вы подошли к задаче не с той стороны. Во-первых — а надо ли вообще редактировать pdf? Ведь (не с этой анкетой, а в общем случае) pdf это уже готовый документ, документы не редактируются, а перевыпускаются. Во-вторых когда такие проблемы возникают первое, что надо сделать — валидация проблемного файла, лучше многими, разными инструментами, желательно что-то официальное. Ну, и если есть желание разобраться с формами, попробуйте сами сделать pdf с формой для заполнения.
« Последнее редактирование: 13.03.2023 06:23:48 от stranger573 »

Оффлайн Olej

  • Участник
  • *
  • Сообщений: 201
Вы подошли к задаче не с той стороны. Во-первых — а надо ли вообще редактировать pdf? Ведь (не с этой анкетой, а в общем случае) pdf это уже готовый документ, документы не редактируются, а перевыпускаются. Во-вторых когда такие проблемы возникают первое, что надо сделать — валидация проблемного файла, лучше многими, разными инструментами, желательно что-то официальное. Ну, и если есть желание разобраться с формами, попробуйте сами сделать pdf с формой для заполнения.
За внимание к проблеме и советы - спасибо.
Но всё что касается форм, которые предоставляют некоторые "учреждения и организации" - это дела давно прошедших лет. А возобновление интереса к PDF (там в теме) возникло совсем по другой причине:
- подготовка книги, которая вот-вот должна уже выйти - книга секйчас уже на выходе в типографии: https://bhv.ru/product/rasshireniya-yadra-linux-drajvery-i-moduli/ ("Расширения ядра Linux: драйверы и модули")
- текст по фактуре очень сложный: команды, ответные реакции на команды, код и т.д.
- верстальщики издательства (крупнейшего русскоязычного, кстати) сходятс ума ... и размечают херню - они не могут различать консольные команды от ответной редакции системы...
- вот просмотр этих их вёрсток, в PDF, может свести с ума...
- и нужно бы всего лишь поправить: где должн быть bold, потому что это команда, а где этого bold-а на дух не должно быть.
 

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 618
- текст по фактуре очень сложный: команды, ответные реакции на команды, код и т.д.
- верстальщики издательства (крупнейшего русскоязычного, кстати) сходятс ума ... и размечают херню - они не могут различать консольные команды от ответной редакции системы...
Это обычное дело, когда в общем специалисты в своей области выполняют работу для области в которой полные профаны. С программистами такая же история. Сразу вспоминаю описание SQL:
Цитировать
...Если бы доктор набрал в консоли такую команду...
...Получил бы вот такую таблицу...
Так сразу и представляется российский доктор чего-то набирающий в консоли, которого министерство здравоохранения ничем не обеспечило, но зато отвело на каждого пациента целых десять минут...

- вот просмотр этих их вёрсток, в PDF, может свести с ума...
- и нужно бы всего лишь поправить: где должн быть bold, потому что это команда, а где этого bold-а на дух не должно быть.
Откройте, например, в LO любой pdf и посмотрите, что там за объекты. Нередко каждая одна линия или буква сами себе объект со своими пропертями. Файл pdf не место для внесения правок, это финальный код для принтера, у него совсем иная структура и иерархия нежели чем у текстовых процессоров или версталок. Не то, чтобы технически невозможно поправить, но это будет сизифов труд. Правки нужно вносить в том, в чём они это верстают. Вам же там всего лишь почиркать красным поверх текста надо и отправить верстальщикам с комментарием "это не правильно". Один из вариантов во вложении.

Оффлайн SerW

  • Участник
  • *
  • Сообщений: 461
    • Вперед, в Интернет!
Ребят, доброй ночи!
Есть вот такой скрипт -- он переводит весь текст в кривые.
Код: (bash) [Выделить]
gs -o Untitled-with_outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite Untitled.pdf
Вопрос мой таков: как можно применить этот скрипт к директории с .pdf, а не к файлу 'Untitled.pdf'?
dragonserw.ru/wiki:basealt

Оффлайн kessys

  • Участник
  • *
  • Сообщений: 1 055
Ребят, доброй ночи!
Есть вот такой скрипт -- он переводит весь текст в кривые.
Код: (bash) [Выделить]
gs -o Untitled-with_outlines.pdf -dNoOutputFonts -sDEVICE=pdfwrite Untitled.pdf
Вопрос мой таков: как можно применить этот скрипт к директории с .pdf, а не к файлу 'Untitled.pdf'?
От файла отказаться нельзя, всё равно операция должна производиться по 1 файлу, но название можно сделать так *.pdf
О подпись)
Жизнь с kde не так плоха, Но без ssd, это жестоко грустно.

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 464
  • ITS
Вопрос мой таков: как можно применить этот скрипт к директории с .pdf, а не к файлу 'Untitled.pdf'?
for file in *.pdf; do
    gs -o "${file%.pdf}-with_outlines.pdf" -dNoOutputFonts -sDEVICE=pdfwrite "$file"
done

Оффлайн SerW

  • Участник
  • *
  • Сообщений: 461
    • Вперед, в Интернет!
rits, да, бомба!
Огромнейшее спасибо.
А можете еще добавить в скрипт команду `mkdir ./with_outlines` и разместить все итоговые файлы туда?
Не сочтите за наглость, просто вообще ноль в таких вещах :-)
dragonserw.ru/wiki:basealt

Оффлайн Nicom

  • Участник
  • *
  • Сообщений: 1 303
mkdir -p ./with_outlines
for file in *.pdf; do
    gs -o "./with_outlines/$file" -dNoOutputFonts -sDEVICE=pdfwrite "$file"
done

Но можно и с помощью find
mkdir -p ./with_outlines; find . -type f -iname '*.pdf' -maxdepth 1 -exec gs -o ./with_outlines/{} -dNoOutputFonts -sDEVICE=pdfwrite {} \;

Оффлайн rits

  • Участник
  • *
  • Сообщений: 1 464
  • ITS
А можете еще добавить в скрипт команду `mkdir ./with_outlines` и разместить все итоговые файлы туда?
вот рекомендация от deepseek-а:
#!/bin/bash

# Задаем переменную с путем для выходных файлов
OUTPUT_DIR="./with_outlines"

# Создаем папку для результатов
mkdir -p "$OUTPUT_DIR"

# Обрабатываем все PDF файлы
for file in *.pdf; do
    # Проверяем, существуют ли файлы .pdf (на случай, если их нет)
    [ -e "$file" ] || continue
   
    gs -o "$OUTPUT_DIR/${file%.pdf}-with_outlines.pdf" -dNoOutputFonts -sDEVICE=pdfwrite "$file"
done

но основы bash надо подтягивать, тем более судя по твоей ссылке много консольных команд используется