Pandoc: как надежно конвертировать документы в Linux

К чему подходит эта статья
Эта статья предназначена для пользователей Linux и документоводов, которые:
- хотят избежать проблем с совместимостью форматирования при обмене файлами;
- предпочитают писать в простом формате (Markdown) и конвертировать в необходимые форматы;
- нуждаются в автоматизации пакетной конвертации и стандартизации стилей в DOCX/ODT.
Важно: здесь описаны практические техники и безопасные шаблоны команд — без предположений о конкретных шрифтах в вашей ОС.
Быстрое введение и пример установки
Pandoc — это программа командной строки, которая читает и пишет множество форматов документов. Небольшая справка: “read” (чтение) — формат входного файла, “write” (запись) — формат выходного.
На Ubuntu и производных установка сводится к одной команде:
sudo apt-get install pandocПосле установки можно конвертировать Markdown в HTML:
pandoc -o myfile.html myfile.mdЗдесь флаг -o указывает имя выходного файла, а расширение файла подсказывает pandoc желаемый формат.

Основные флаги и шаблон простого цикла для пакетной обработки
- -r, –read: указать входной формат (например, markdown, docx).
- -w, –write: указать выходной формат (например, html, docx, pdf).
- -o: имя выходного файла.
- –reference-docx / –reference-odt: шаблон оформления для DOCX/ODT.
Пример конвертации Markdown в MediaWiki:
pandoc -r markdown -w mediawiki -o markdown.wiki markdown.mdЕсли у вас папка с DOCX-файлами и нужно конвертировать их в Markdown, можно использовать цикл bash. Исходный пример:
for file in *
do
pandoc -r docx -w markdown -o "$file".md "$file"
doneЭтот вариант оставит имена вида filename.docx.md. Лучше сразу переименовать корректно — пример скрипта ниже.
Скрипт для пакетной конвертации с переименованием
Создайте файл convert-docx-to-md.sh:
#!/bin/bash
shopt -s nullglob
for f in *.docx; do
base="${f%.docx}"
echo "Конвертация: $f -> $base.md"
pandoc -r docx -w markdown -o "$base.md" "$f"
doneСделайте исполняемым: chmod +x convert-docx-to-md.sh и запустите.
Совет: проверяйте пару файлов вручную перед массовой обработкой.

DOCX/ODT reference-файлы: кастомизация оформления при конвертации
Если вы хотите сохранить фирменное форматирование (шрифты, нумерация заголовков, стили), используйте reference-файл — это DOCX или ODT с нужной вам разметкой. Pandoc применит стили при конвертации Markdown в DOCX/ODT.
Пример команды для ODT:
pandoc -r markdown -w odt --reference-odt=/home/user/path/to/ref-file.odt -o lowriter.odt lowriter.mdИли для DOCX:
pandoc -r markdown -w docx --reference-docx=/home/user/path/to/ref-file.docx -o output.docx input.mdКак подготовить reference-файл:
- Откройте LibreOffice (или Word) и создайте документ со всеми стилями: Heading 1, Heading 2, Normal, Quote, Code, Table, Caption и т.д.
- Настройте шрифты, отступы, нумерацию и таблицы стилей.
- Сохраните документ как .docx или .odt и используйте его как reference-файл.

Важно: шаблон влияет на соответствие стилей, но не гарантирует абсолютной идентичности рендеринга между системами — шрифты и их метрики зависят от платформы.

Генерация PDF: несколько вариантов и рекомендации
Есть два распространённых подхода для получения PDF из Markdown через pandoc:
- Лёгкий путь — использовать wkhtmltopdf: pandoc сначала превращает Markdown в HTML, затем wkhtmltopdf генерирует PDF.
- Профессиональный путь — установить TeX-пакеты (LaTeX/TeX Live), чтобы pandoc использовал TeX как backend и дал более типографски корректный результат.
Установка wkhtmltopdf и использование:
pandoc -r markdown -w html -o nicepub.pdf nicepub.mdЕсли вы хотите воспользоваться наборами TeX и получить лучшее управление типографикой:
sudo apt-get install --install-suggests pandocЗатем можно прямо просить pandoc сгенерировать PDF через TeX:
pandoc -r markdown -w pdf -o nicepub-tex.pdf nicepub.mdОтличия:
- wkhtmltopdf требует установки одного пакета и удобен для HTML-ориентированных шаблонов; проще при использовании CSS.
- TeX/LaTeX даёт более аккуратную типографику, автоматическую нумерацию страниц и лучше управляет размещением фигур и таблиц, но требует много зависимостей.

Совет: если цель — печать книги или длинного отчёта, выбирайте TeX; для быстрых вёрсток под веб/CSS — wkhtmltopdf.
Создание электронных книг (EPUB)
Pandoc умеет собирать EPUB и EPUB3 из Markdown — удобно для создания лёгких электронных книг.
pandoc -r markdown -w epub -o mybook.epub mybook.mdПри необходимости можно добавить метаданные (title, author, date) в шапку Markdown-файла (YAML-метаданные). Пример заголовка в Markdown:
---
title: "Моя книга"
author: "Автор Имя"
year: 2025
---
Расширенная функциональность и Markdown-диалект pandoc
Pandoc поддерживает расширенную версию Markdown: метаданные, таблицы, расширенные списки, оформление кода, подчёркивания и зачёркивания, верхние и нижние индексы. Это делает pandoc удобным инструментом не только для конвертации, но и для написания документов с богатой семантикой.
Короткие примечания по возможностям:
- Метаданные: используются YAML-блоки в начале файла.
- Таблицы: более удобная и мощная поддержка по сравнению с “vanilla” Markdown.
- Поддержка блоков с подсветкой синтаксиса при указании языка.
Больше опций смотрите в официальной документации на pandoc.org.
Интеграция с графическими приложениями и редакторами
Pandoc — это утилита командной строки, но удобство можно повысить с помощью GUI или интеграции в редакторы. Некоторые популярные варианты:
- PanDocElectron — графический интерфейс с выпадающими списками форматов и выбором input/output через диалог.
- Плагины для редакторов (Atom, VSCode, Sublime) — позволяют сохранять текущий файл в выбранный формат через pandoc.
- Использование систем сборки (Makefile, npm-скрипты) для автоматизации сборки документации, PDF и EPUB.

Пример запуска PanDocElectron: в каталоге приложения выполните
npm start
Пример интеграции с редактором Atom: используйте пакеты pandoc-convert и build-tools, чтобы запускать команды pandoc прямо из редактора.



Когда pandoc не сработает идеально: ограничения и типичные проблемы
- Сложные макеты Word/Excel/PowerPoint: pandoc не воспроизводит произвольную верстку и макросы.
- Специфические поля форм (формы Word), защищённые документы и «обработанные» шрифты — pandoc может прочитать содержимое, но стили могут слететь.
- Точные страницы макета (фактурная верстка каталога, плакатов) — лучше использовать исходную DTP-систему.
Контрпример: если документ содержит встроенные фигуры со сложной привязкой к тексту, при конвертации в Markdown позиционирование может потеряться.
Важно: pandoc отлично подходит для семантической миграции контента, но не для точного сохранения визуального позиционирования.
Альтернативы и сочетания инструментов
- LibreOffice (headless) / unoconv — можно использовать для пакетной конвертации офисных форматов; часто полезно в связке с pandoc.
- wkhtmltopdf — для HTML → PDF, когда важны CSS-стили.
- Calibre — для продвинутой сборки электронных книг и массовой обработки форматов EPUB/MOBI.
Комбинация инструментов часто даёт лучший результат: например, сначала LibreOffice для приведения DOCX к стандартному виду, затем pandoc для преобразования в Markdown.
Практический playbook: от идеи до готового файла
- Написание: используйте Markdown с YAML-метаданными.
- Локальные проверки: просматривайте результат в HTML/浏览ере или через markdown-рендерер.
- Применение стиля: подготовьте reference.docx или reference.odt.
- Тестовая конвертация: переведите 1–2 файла в DOCX/ODT/PDF и проверьте форматирование.
- Пакетная обработка: запустите скрипт или Makefile.
- Контроль качества: проверьте ключевые элементы (таблицы, списки, изображения, подписи).
Пример Makefile для сборки разных форматов:
SRC=mybook.md
PDF=mybook.pdf
EPUB=mybook.epub
DOCX=mybook.docx
all: $(PDF) $(EPUB) $(DOCX)
$(PDF): $(SRC)
pandoc -r markdown -w pdf -o $@ $<
$(EPUB): $(SRC)
pandoc -r markdown -w epub -o $@ $<
$(DOCX): $(SRC)
pandoc -r markdown -w docx --reference-docx=ref.docx -o $@ $<
clean:
rm -f $(PDF) $(EPUB) $(DOCX)Контрольные списки по ролям
Для автора:
- Пишите в Markdown с явными заголовками и подписью картинок.
- Вставляйте изображения относительными путями и указывайте подписи в тексте.
- Поддерживайте YAML-метаданные (title, author, date).
Для редактора/верстальщика:
- Подготовьте reference-файл с нужными стилями.
- Проверьте соответствие шрифтов и нумерации заголовков.
- Тестируйте печать и оглавление.
Для администратора/инженера CI:
- Автоматизируйте сборку через Makefile или CI (GitHub Actions, GitLab CI).
- Убедитесь, что все зависимости (pandoc, TeX или wkhtmltopdf) установлены на runners.
- Логируйте ошибки конвертации и делайте артефактами собранные PDF/EPUB.
Отладка: частые ошибки и способы их исправления
- “pandoc: Unknown writer ‘pdf’” — означает, что TeX-пайплайн не установлен; либо установите TeX Live, либо используйте HTML + wkhtmltopdf.
- Пропавшие изображения — проверьте пути и относительность; для EPUB изображения должны быть доступны при сборке.
- Нестандартные шрифты в DOCX не отображаются — включите их в reference-файл и убедитесь, что получатели имеют эти шрифты или используйте встроенные доступные шрифты.
Краткий глоссарий (1 строка на термин)
- Markdown — простой текстовый формат разметки для писательства.
- DOCX/ODT — форматы документов Word/LibreOffice с поддержкой стилей.
- Reference-файл — DOCX/ODT-шаблон, применяемый при конвертации.
- wkhtmltopdf — инструмент для преобразования HTML в PDF.
- TeX/LaTeX — типографическая система для создания печатных документов.
Советы по совместной работе и миграции
- При миграции большого архива делайте тестовую выборку (5–10 файлов разных типов) и сравните результаты.
- Документируйте style-guides и держите reference-файлы в репозитории вместе с процессом сборки.
- Автоматизируйте проверки в CI: при изменении Markdown собирайте целевые форматы и выкладывайте артефакты.
Примеры реальных задач и как их решать
Задача: получить DOCX с фирменным стилем для клиента на основе Markdown. Решение:
- Подготовьте reference.docx с корпоративными стилями.
- Запустите:
pandoc -r markdown -w docx --reference-docx=reference.docx -o report.docx report.md- Проверьте заголовки и списки; при необходимости поправьте стили в reference.docx.
Задача: собрать книгу в EPUB и PDF в CI при каждом коммите.
Решение: добавьте Makefile и настройте CI-конвейер, устанавливающий pandoc и wkhtmltopdf или TeX, затем запускающий make all.
Итог и рекомендации
Pandoc — это надежный инструмент для перевода контента между форматами. Он не заменит специализированные инструменты для графического дизайна и точной верстки, но прекрасно подходит для:
- единообразной подготовки документов;
- автоматизации конвертации в CI;
- генерации электронных книг и печатных PDF из одного Markdown-источника.
Если вам важно точно контролировать стиль для конечного DOCX/ODT, инвестируйте время в подготовку reference-файлов; если нужна быстрая печать — используйте TeX; если требуется точная веб-верстка на основе CSS — wkhtmltopdf.
Если вы часто конвертируете документы и сталкиваетесь с проблемами совместимости, опишите конкретный кейс в комментариях — и вы получите практическую подсказку по применению pandoc в вашем сценарии.
Image Credit: Nirat.pix via Shutterstock.com
Похожие материалы
Убрать раздражающие функции Facebook — руководство
Приложения по умолчанию на Android — настройка и управление
Установить REMnux в VirtualBox — руководство
Список выполненного: мотивация и шаблоны
Как сохранить веб‑страницу для офлайн‑чтения