pdf вышел с решётками внутри

обновлено · автор

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. команда, которую вы соберёте, состоит из трёх шагов:

  1. откройте «Быстрые команды», создайте новую и поставьте на вход приём файлов — или получение файла, если предпочитаете выбирать его каждый раз.
  2. добавьте действие, делающее из markdown форматированный текст, и подайте на его вход этот файл.
  3. добавьте создание 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 уже есть, и оба идут по одному файлу, с кликом посередине:

  1. через Safari: pandoc -s notes.md -o notes.html, откройте html в Safari, «Файл» → экспорт в pdf. ключ -s важен: без него у html нет заголовка документа, и Safari рисует его дефолтной антиквой.
  2. через 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

об авторе

Антон Шакиров, автор hop

создаёт hop

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

download hopfree · macOS 14+ · Apple silicon and Intel