pdf вышел с решётками внутри
обновлено · автор Anton Shakirov
markdown в macOS не рисует ничто. TextEdit, быстрый просмотр и окно печати считают .md обычным текстом, поэтому печать в pdf отдаёт вам заголовки с решётками перед ними. бесплатные способы получить настоящую вёрстку — действие, которое Apple кладёт в «Быстрые команды», и pandoc, если только не просить у pandoc сразу pdf: на Mac, где больше ничего не установлено, этот шаг падает.
перевести markdown в pdf тем, что на Mac уже есть
начнём с того, что не работает, потому что это первое, что пробуют все. macOS тип файла знает — Spotlight помечает .md как net.daringfireball.markdown — и всё равно отдаёт его просмотрщику обычного текста. быстрый просмотр показывает исходник, TextEdit его открывает, а печать в pdf печатает его гарнитурой Helvetica, с каждой решёткой и звёздочкой ровно там, где вы их набрали. textutil и cupsfilter в командной строке делают то же самое, только гарнитурой Monaco.
это та же ловушка обычного текста, на которую в командной строке попадаются файлы Word — textutil сохраняет слова и теряет документ: перевести документы Word в pdf пачкой
действие в «Быстрых командах», которое верстает markdown
единственный рендерер, который Apple всё-таки даёт, живёт в «Быстрых командах»: это действие, делающее из markdown форматированный текст. второе действие превращает этот текст в файл pdf. команда, которую вы соберёте, состоит из трёх шагов:
- откройте «Быстрые команды», создайте новую и поставьте на вход приём файлов — или получение файла, если предпочитаете выбирать его каждый раз.
- добавьте действие, делающее из markdown форматированный текст, и подайте на его вход этот файл.
- добавьте создание pdf, потом сохранение файла — и запускайте команду из меню отправки или из списка быстрых действий в Finder.
действие собственное, от Apple, и последний раз его поведение на Mac меняли в macOS 13.4 (страница английская): Apple, что нового в «Быстрых командах»
цена в том, что вы получаете форматированный текст: заголовки, полужирный, списки, ссылки — то, что текстовый редактор считает документом. те, кто гоняет через это что-нибудь длиннее письма, жалуются на пропадающие пустые строки между абзацами и лечат это шагом с заменой текста перед конвертацией. настоящий путь для заметок, и встроенный. но не типографика.
pandoc: md в pdf на Mac, бесплатно, и где команда останавливается
pandoc не входит в macOS, но он бесплатный, открытый и на него показывает каждый второй результат выдачи, поэтому место ему здесь под собственным именем. он переводит markdown более или менее во что угодно, и по-настоящему: заголовки, таблицы, блоки кода, сноски. ставится через Homebrew или со страницы самого проекта.
почему pandoc пишет pdflatex not found
команда, которую все публикуют, — pandoc notes.md -o notes.pdf. на Mac, где есть pandoc и больше ничего, pdf она не делает. она останавливается на «pdflatex not found. Please select a different --pdf-engine or install pdflatex». pandoc сам страницы не рисует: ради pdf он отдаёт документ вёрстальному движку, а по умолчанию этот движок — LaTeX, то есть отдельная установка, которая меряется гигабайтами. в руководстве перечислено тринадцать движков, и ни один из них не идёт вместе с macOS.
список движков и строка о том, что по умолчанию нужен LaTeX (страница английская): руководство pandoc, создание pdf
та же форма на видеостороне, где бесплатный инструмент настоящий, а цена — знать, что набрать: перевести mov в mp4
два пути pandoc, которые работают без всякого движка
оба берут рендерером программу, которая на Mac уже есть, и оба идут по одному файлу, с кликом посередине:
- через Safari: pandoc -s notes.md -o notes.html, откройте html в Safari, «Файл» → экспорт в pdf. ключ -s важен: без него у html нет заголовка документа, и Safari рисует его дефолтной антиквой.
- через Pages: pandoc notes.md -o notes.docx, откройте файл в Pages, «Файл» → экспорт → PDF. таблицы переезжают таблицами: docx, который пишет pandoc, их несёт, а Pages их верстает.
экспорт в pdf у Safari — отдельный пункт меню, не окно печати, и сохраняет он страницу целиком, а не видимую часть (страница английская): Apple, руководство пользователя Safari
итого на один файл: «Быстрые команды», если документ простой, и pandoc плюс Safari или Pages, если в нём таблицы и код. оба бесплатны, оба работают, и оба — цепочка, которую надо знать. простой случай заканчивается на втором файле или в тот первый раз, когда вы забыли, какая из команд pandoc — та, что запускается.
цепочка становится короче, когда конвертер берёт документы наравне с картинками и видео: конвертер файлов
так чем же всё-таки верстается markdown
на Mac, где ничего не установлено, соберите один раз команду в «Быстрых командах». на Mac, где есть pandoc, берите pandoc — через Safari или Pages, но не прямо в pdf. для папки markdown или для файла, который нужно сверстать, не открывая вторую программу, берите конвертер, который читает markdown и сам пишет pdf, — потому что каждый бесплатный путь выше заканчивается кликом на каждый файл: рендерером там работает браузер или текстовый редактор, а не конвертер.
pdf, который выйдет любым из этих способов, несёт в себе шрифты, и длинный документ может оказаться тяжелее, чем вы ждали: сжать pdf на Mac
как переводит markdown в pdf hop
конвертер hop берёт .md так же, как берёт heic или mov: перетащите файл или папку файлов, и pdf ляжет рядом с оригиналом копией. вёрстку делает сам hop — без pandoc, без LaTeX, без браузера посередине и без единой докачки. всё нативно и работает офлайн.
- markdown уходит в pdf, свёрстанный самим hop. файлы Word — .docx, .doc, .rtf — тем же образом уходят в pdf или в markdown.
- обратная сторона тоже работает: текст из pdf выходит markdown, а отсканированная страница читается через Vision, а не возвращается пустой.
- папка — одно перетаскивание. шага на каждый файл нет, потому что рендерер и есть конвертер.
- оригиналы нетронуты, результаты ложатся копиями рядом.
часть с Vision — отдельный инструмент, и именно благодаря ей отсканированная страница в pdf возвращается текстом: распознавание текста
| что у вас есть | бесплатный путь | с hop |
|---|---|---|
| одна короткая заметка, без таблиц | действие в «Быстрых командах», собранное один раз, — минута | не нужен, берите команду |
| документ с таблицами и блоками кода | pandoc в html или docx, потом Safari или Pages, потом экспорт | перетащите файл |
| pandoc notes.md -o notes.pdf | «pdflatex not found» — ставьте вёрстальный движок или меняйте команду | движок ставить не нужно |
| папка markdown | цикл в консоли для pandoc, и потом экспорт в Safari или Pages на каждый файл | перетащите папку |
| оформленный отчёт с логотипом и колонтитулами | pandoc с шаблоном, который вы напишете, и движок, чтобы его отрисовать | та же граница — hop верстает markdown, но шаблона не принимает |
последняя строка — это граница. конвертер верстает то, что сказано в markdown; документ с оформленной обложкой, колонтитулами и фирменным шрифтом — работа шаблонная, и делают её pandoc с шаблоном или та программа, в которой макет и рисовали. hop — для файла или сорока файлов, которым надо стать читаемым pdf прямо сейчас.
если pdf вышел неправильным
- решётки и звёздочки остались в pdf. вы напечатали файл из TextEdit, из быстрого просмотра или из окна печати, а markdown не верстает ни один из них. pdf — это распечатка исходника. идите через «Быстрые команды» или через pandoc.
- pandoc говорит pdflatex not found. он просит вёрстальный движок, которого на вашем Mac нет. пишите вместо pdf html или docx и дайте сделать pdf Safari или Pages.
- абзацы слиплись. это путь через «Быстрые команды»: форматированный текст теряет пустые строки, которыми markdown разделяет абзацы. лечат это шагом замены текста, удваивающим переводы строк перед конвертацией.
- таблица превратилась в столбик слов. рендерер не прочитал синтаксис таблицы. pandoc читает таблицы на вертикальных чертах; в пути через «Быстрые команды» таблицы — первое, что стоит проверить в результате.
- шрифты дефолтные, браузерные. вы шли через Safari без ключа -s, и у html не было оформления. добавьте -s или передайте свой css через --css.
- картинки пропали. относительные пути к картинкам считаются от того места, где запущен рендерер, а не от того, где лежит файл. открывайте html из той же папки или пишите абсолютные пути.
- блок кода потерял отступы. снова путь через «Быстрые команды»: у форматированного текста нет моноширинного блока. pandoc оставляет код кодом.
- pdf огромный для текстового файла. это зашитые шрифты, нередко по копии на каждое начертание заголовков. сжимается это хорошо.
та же форма «по одному файлу за раз», только на картинках, где у macOS ответ для пачки всё-таки есть — в меню правого клика: перевести heic в jpg
frequently asked questions
- можно ли перевести markdown в pdf на Mac, ничего не устанавливая?
- да, через «Быстрые команды»: действие, делающее из markdown форматированный текст, а за ним создание pdf. действие собственное, от Apple, и оно рисует заголовки, выделения, списки и ссылки. на выходе форматированный текст, а не свёрстанная полоса, так что перед длинным документом проверьте в результате таблицы и блоки кода.
- почему в моём pdf из markdown остались символы #?
- потому что программа, которая его напечатала, markdown не верстает. TextEdit, быстрый просмотр и окно печати считают .md обычным текстом — macOS знает тип файла и всё равно показывает его как текст. pdf получился распечаткой исходника, а не его вёрсткой.
- почему pandoc пишет pdflatex not found?
- pandoc сам страницы не рисует; ради pdf он вызывает вёрстальный движок, по умолчанию LaTeX, а его на Mac нет. либо поставьте движок, либо пусть pandoc напишет html или docx, а pdf экспортируйте из Safari или Pages.
- рисует ли быстрый просмотр markdown на Mac?
- нет. он показывает сырой исходник. тип файла определён как markdown, но рисует его генератор для обычного текста. свёрстанный предпросмотр, о котором рассказывают, дают сторонние расширения, а не macOS.
- можно ли перевести в pdf целую папку markdown?
- с pandoc — только наполовину: цикл в консоли напишет по html или docx на файл, а pdf всё равно придётся экспортировать из Safari или Pages по одному. конвертер, который читает markdown и сам пишет pdf, берёт папку одним перетаскиванием.
- сохраняет ли hop таблицы и блоки кода?
- hop верстает markdown сам, без браузера и офисного пакета в цепочке. чего он не делает — шаблонов: оформленная обложка, колонтитулы и фирменный шрифт — это работа для pandoc с шаблоном, и hop её не заменяет.
the tool behind this
file converterimages, video, audio and documents. offline, with the size shown up front.done with конвертация и сжатие
other things people do
- a folder of heic, and something that wants jpgfile converter
- mov and mp4 are often the same filefile converter
- QuickTime will not open it. the video is fine.file converter
об авторе

Anton Shakirovсоздаёт hop
создаёт hop и все страницы этого сайта. девятнадцать инструментов под одной иконкой в menu bar, MIT и открытый код. на issue и письма отвечает сам.