Добавить колонтитулы в многостраничные графические файлы #725944


#0 by Baloven
Доброго дня в общем столкнулся с несколькими проблемами решая задачу по пакетной печати графических файлов. есть внешняя обработка которая формирует некий документ(-ы) ну допустим исковое заявление в суд - с этим все нормально, НО.. встала задача формирования списка приложений (приложения - это фактически отсканированные файлы как правило xlsx, docx, pdf, tif в качестве унификации решено все файлы хранения сконвертировать из используемых оригинальных форматов в PDF (это просто решается с помощью утилит imegemagick) но следующий этап !!! нужно при отрабоке процедуры печати комплекта в печатываемые файлы приложений добавлять: в верхний колонтитул фразу наподобии: "приложение №х к исковому заявлению в отношении должника Фамилия Имя Отчество" + символ переводки картеки + "Страница х из У" при этом колонтитул должен быть прижат к правому углу для нечетных страниц и к левому для четных (двухсторонняя печать) ну и внизу нижний колонтитул: "копия верна: 15 ноября 2014 года представитель по доверенности ______________ Иванов И.И." собственно вопрос: не могу толком найти информацию по применению ключей imegemagick для этой задачи - а в частности именно по работе с многостраничными файлами
#1 by Wobland
ответ: да
#2 by b_ru
Как вариант можно ваши картинки превратить в SVG, наложить все нужные колонтитулы текстом, а затем уже сконвертировать в PDF.
#3 by b_ru
А с imagemagick можно так: ну или эдак:
#4 by Baloven
то что так можно - именно потому на него и посмотрел (да и к слову говоря давно уже выдрал процедуры сканирования из документооборота и скорректировал под свои задачи) я смотрел мануалы - но там примеры работы с 1 картинкой ну или примеры для создания/редактирования 1 картинки - а я спрашиваю про редактирование по сути ряда картинок - конечно можно разбить tif или тот же pdf на страницы - их отредактировать скриптом (добавить те самые колонтитулы) и заново собрать - но что-то мне подсказывает что решение гораздо проще - ведь есть же экспорт конкретных страниц многостраничного файла в другой формат (указывается через квадратные скобки у источника) - вот и возник вопрос как на на кокретную страницу добавить колонтитул???
#5 by Baloven
в общем так и не могу совладать с редактированием PDF - пока что единственный рабочий вариант это разобрать PDF на страницы например так convert e:q.pdf e:q.png - в результате получим кучу файликов q-0.pgn - q-(n-1).pgn где (n-1) это число страниц -1 (по сути индекс страницы при этом первыя страницы имеет индекс 0!!!! кстати к странице можно обратится по индексу (и в том числе экспортировать именно ее или их вот так: convert e:q.pdf[1-7] e:q.png что конвертирует со второй по 8ю страницы или так что соответственно конвертирует 1-3 страницы и 7 и 28, при этом индексы естественно у нового файла будут сохранены теперь грабли :) куда без них - в вышеприведенных примерах есть ГЛЮК поковырявшись в доках и погуглив и с ним разобрался по сути вышеприведенная строка (и любая выше) должны иметь ключ указывающий с каким разрешением сделать выходной файл - а то иначе очень разочаруетесь ну мне достаточно 200dpi - так что пример должен выглядеть примерно так: convert -density 200 e:q.pdf[1-3,7,28] e:q.png собрать обратно (перебрав их и отредактировав.... это чуть позже) convert e:q-*.png e:q.pdf сейчас буду ковырять само редактирование - чуть позже выложу строки
#6 by Baloven
чуток в описании ошибся "[1-3,7,28]" естественно это номера 2-4 и страницы 8, 28
#7 by Baloven
+ совсем уже :) сорри не в а в ну и не 28 а 29.... и почему здесь нет функции редактирования сообщения
#8 by Baloven
собственно вот примерно что получилось: convert -pointsize 24 label:"Страница 5 из 7" q-0.png -background none -gravity east -append out.png это добавление наверху страницы (q-0.png - это файл со сканом страницы) нумератора справа (слева добавить нужно east поменять на west) теперь формируем нижний колонтитул: convert -pointsize 24 label:"18 ноября 2014 года" -pointsize 24 label:"Передставитель по доверенности_____________________ Иванов И.И." -pointsize 16 label:" " -gravity west подвал.png Здесь мы поставили дату, ниже подписант, ниже добавлен строка с пробелом, потому как лично у меня попросту иначе принтер обрезает половину строки подписанта при печати convert out.png подвал.png -gravity Center -append finalPage-01.png ну здесь объединение верхней части с частью подписанта... тут мне пока что непонятен один момент: как это все написать одной строкой? потом как из-за того что везде разное выравнивание - получается их нельзя объединить? или как-то можно?
#9 by Baloven
+ размер шрифта (-pointsize 24) подбирал экспериментарным путем
#10 by Baloven
в общем никто так и не помог - победил сам... замучался и запутался в скобках, не сразу понял что между ними должны быть ОБЯЗАТЕЛЬНО пробел!!!! в общем вот одной строкой convert ( ( -background none -pointsize 24 label:"Страница 1 из 7" -background none -pointsize 24 label:"Приложение №27" -gravity East -append ) test.tif[0] -gravity East -append ) ( -background none -pointsize 24 label:"18 ноября 2014 года" -pointsize 24 label:"Передставитель по доверенности_____________________ Иванов И.И." -pointsize 16 label:" " -gravity West -append ) -gravity Center -append -density 200 OUT-01.png дабы не заморачиваться с перебором файлов (листов) разобранного tif-файла или PDF - я решил сразу обратиться к нужной странице и конвертировать именно ее. Так как у меня заранее изветстно количество страниц в файле (лежит в базе в отдельном поле описания файла) то сделать цикл для заполнения данной коммандной строки - проблем нету - кому интересно - смотрите форум и справку :) ну и потом после заполнения всего этого добра и перебора по сути всех приложений - можно до кучи собрать все в единый PDF чтобы печатать можно было при необходимости единым файлом - только тут сразу оговорюсь что если у Вас как и у меня принтер с двухсторонней печатью - то незабудьте добавить по 1 пустой странице в конце файлов у которых количество листов нечетное... на сим все - всем спасибо :)
#11 by Baloven
.... да + много времени ушло на понятие и последовательность обработки скобок. на последнем этапе у меня в итоге получилась ситуация что у меня правильно формировался верхний колонтитул (прижатие его справа или слева) но нижний как ни крути был слева листа (отрабатывался в конце команды "-gravity West", но я не мог понять почему не отрабатывался "-gravity Center" пока чисто случайно не продублировал строку в середине.... вот этот кусок строки ""Приложение №27" -gravity East -append ) test.tif[0] -gravity East -append ) (" у меня был такой: ""Приложение №27" test.tif[0] -gravity East -append ) (" ну и скобочки не было второй в начале команды - на нее и дал ошибку - вот после этого все встало на места... нижний по центру верхний справа(слева) и у нижнего обе строки с прижатием к левому началу :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С