Опрос

Что вы думаете по поводу веб-кастов, выложеных на сайте?
 

Последнии комментарии

Пересборка PDF PDF Печать E-mail
Рейтинг пользователей: / 2
ХудшийЛучший 
Автор: Yakim   
31.03.2011 13:30

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

То есть 1 и 2 страница на первой стороне, 3 и 4 на второй... ну и так далее.

 

Принтер таких хитрых настроек не имел, по этому пришлось выкручиваться. На помощь пришла утилитка imagemagic.

Задача делится на 3 части:

  1. разобрать pdf по страницам на jpg
  2. соединить по порядку по 2 jpg вместе
  3. снова собрать в pdf

Все это оказалось элементарно сделать при помощи пакета ImageMagic.

И так. Вперед по пунктам.

Разобрать pdf

Используем утилиту convert:

$convert source.pdf source.jpg

На выходе получаем кучу jpg-ов, пронумерованных от 0 до количества страниц -1.

Соединить jpg вместе

Тут нам на помощь приходит утилита montage.

$montage -geometry +4+4 source-0.jpg source-1.jpg output1.jpg

Собрать картинки в pdf

И опять пользуемся convert:

$ convert output1.jpg output2.jpg output1.pdf

В общем... Где-то так.

Вот только обычно в pdf далеко не 10 страниц. По этому сваял скриптик:

#!/bin/bash
#Создаем временную папку
mkdir tmp
# имя файла на входе
pfile=$1;
# сколько страниц обрабатываем
strn=$2

echo "Unpack pdf....";
# распаковываем в картинки
convert $pfile "tmp/${pfile%.pdf}.jpg";

echo "convert images.."
#в этом цикле склеиваем страницы
for i in $(seq 0 2 $strn);
do
fn=${pfile%.pdf}-$i.jpg;
let "t = i + 1";
fn1=${pfile%.pdf}-$t.jpg;

montage -geometry +4+4 "tmp/$fn" "tmp/$fn1" "tmp/$i-$t.jpg";
pdff=$pdff\ tmp/$i-$t.jpg;
done;

echo "create new pdf....";
pdff=$pdff\ res.pdf;
# и создаем новый файл
convert $pdff;

rm -rf tmp/*;
rmdir tmp;

Cкрипт вызывается с двумя параметрами - имя файла на входе и количество страниц в нем -1

 

Обновлено 01.04.2011 09:45
 

Комментарии 

 
0 #1 Alex 12.05.2012 16:47
Эхе-хе...
Как всё сложно-то!
А для кого придуманы
psbook, psnup и иже с ними?
Мда...
 
 
0 #2 drAjbolit 28.02.2013 22:25
Супер!
Утащу себе
 

Добавить комментарий

Защитный код
Обновить

 
2.png

Дружественные сайты

Linux для всех

 

Видеоуроки

 

 

Ubuntu в Сумах

 

Мои Счетчики