Пишу о программировании, книгах, науке и жизни
1 заметка с тегом

linux

Конвертация из Markdown в PDF

24 января 2015, 21:44

Задача

Сконвертировать список .md файлов в .pdf, затем все склеить в определенном порядке в один большой PDF-файл.

Инструменты

Устанавливаем Ruby 2.0

sudo apt-get -y update
sudo apt-get -y install build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev
cd /tmp
wget http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p481.tar.gz
tar -xvzf ruby-2.0.0-p481.tar.gz
cd ruby-2.0.0-p481/
./configure --prefix=/usr/local
make
sudo make install

Устанавливаем RVM

gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
\curl -sSL https://get.rvm.io | bash

Устанавливаем необходимые библиотеки

sudo apt-get install wkhtmltopdf
sudo apt-get install libxml2-dev
sudo apt-get install libxslt-dev

Ставим Gimli (конвертер из Markdown в PDF)

sudo gem install gimli

Устанавливаем PDFTK (для склейки в PDF)

sudo apt-get install pdftk

Процесс

Если нужно удалить первые n строк из .md файлов, используем команду:

# Запускается из папки с .md файлами
# Команда ниже удалит первые 3 строки из каждого файла
sed -i '3d' *.md

Сконвертировать все файлы из текущей папки в папку pdf (папка будет создана, если не существует):

gimli -recursive -outputdir pdf

К выходному файлу можно применить свои CSS-стили, сохранив их в файл style.css в папку со списком pdf-файлов

/*Уменьшить максимальную ширину всех картинок до 500 пикселей*/
img {max-width: 500px;}

Cо стилями команда конвертации будет такой:

gimli -recursive -outputdir pdf -stylesheet style.css

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

cd pdf 
pdftk 1.pdf 2.pdf cat output big.pdf

P.S Объединить .md файлы в один PDF можно и с помощью Gimli, но он не позволит слить файлы в определенном порядке, так как его параметр -merge не принимает аргументов.

На этом конвертация закончена.
Вопросы можно оставить в комментариях.