Como posso converter um Markdown com sabor do Github em um PDF


147

Recentemente, comecei a aprender o Markdown para uso com a documentação e preciso imprimir algumas das minhas páginas do Markdown. Gostaria de usar um utilitário de linha de comando, Terminal etc. que me permita converter Markdown com sabor do Github em PDF. Ele precisa ter destaque apropriado da sintaxe e não deve parecer horrível. Obrigado por qualquer ajuda.


A coloração da sintaxe no GitHub não faz parte do GitHub Flavored Markdown. Pelo menos até onde eu sei.
Der Hochstapler

O @OliverSalzburg Github usa o Linguist para fornecer destaque de sintaxe.
DanteTheEgregore

@ dillmo, converta primeiro para HTML e depois use o Chrome para imprimir em PDF.
Pacerier 18/02

Respostas:


150

Consegui usar a aderência para exibir descontos no Chrome e usar a opção "Salvar como PDF" do Chrome na caixa de diálogo Imprimir.

pip install grip  
grip your_markdown.md

grip renderizará a redução no localhost: 5000 - basta editar e atualizar o navegador. Imprima quando estiver pronto.

Isso deu uma representação mais confiável que o pandoc e foi mais leve que a instalação do látex (exigido pelo pandoc para geração de pdf).

A impressão não é uma linha de comando nesta resposta, mas ainda assim foi mais fácil / confiável (parecia 100% parecido com o Github em um documento longo, incluindo imagens relativamente vinculadas e destaque de código).


2
isso é fácil o suficiente.
s2t2 5/09/2015

16
grip your_markdown.md --export your_markdown.htmlé uma opção útil aqui. Exporta para o arquivo html, que pode ser impresso na linha de comando usando algo como wkhtmltopdf.
Luke Exton

1
Infelizmente, o grip precisa do acesso ao GitHub. Ele não funciona offline
nowox 30/10/2015

6
Como alternativa, você pode fazer o download (gratuito!) Atom ( atom.io ), abrir seu arquivo no Atom, usar control + shift + M para visualizá-lo na visualização, salvar como html, abrir o html no navegador Chrome e salvar como pdf.
Andrew Carter

6
Isso vem com o quadro semelhante ao Github. Existe uma maneira de imprimir em PDF, removendo as bordas / barra de título (ou seja, imprimindo tudo dentro do quadro)?
Joost

56

Você também pode usar o markdown-pdf baseado em Node.js.

npm install -g markdown-pdf
markdown-pdf /path/to/markdown

2
Isso é incrível e muito fácil. O problema do link vem do css print do html5, que você pode comentar ou substituir em sua própria folha de estilo.
Robert Went

Gostaria de acrescentar que isso possui suporte Unicode pronto para uso, o que é muito bom.
Niek

Você também pode instalar o github-markdown-css se quiser usar o arquivo CSS do GitHub.
precisa saber é o seguinte

@ jpmc26 como você pode usá-lo, não tenho conhecimento de javascript ou npm?
Abhishek Bhatia

1
@AbhishekBhatia Este é o primeiro resultado quando pesquisei "introdução ao npm" no Google: smalljs.org/package-managers/npm . É apenas um arquivo enterrado em node_modules após a instalação.
precisa saber é

39

Dê uma olhada no pandoc . Possui destaque de sintaxe. Pode ser necessário que você faça (pequenas) alterações em seu documento, pois ele possui seu próprio sabor de remarcação e não sei se ele se aproxima do sabor do GitHub.


3
Obrigado. A execução pandoc -hretornou o suporte ao GitHub Flavored Markdown, por isso estou marcando esta questão como resolvida.
dillmo

2
Tentei instalar pandocno Fedora Linux e tive um pesadelo de dependência - principalmente relacionado ao LaTex. Meu conselho seria prioridade pandoc e tentar outras opções em primeiro lugar
BNAI

Para aqueles que usam letras não-ASCII e levá-los em falta: adicionar opções de fonte para pandoc, como estes:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

4
Se alguém está procurando apenas os comandos: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(no Ubuntu, provavelmente não todos necessário), entãopandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg

@ TorKlingberg Obrigado, acho que é a melhor resposta!
thc 02/09

12

Se o arquivo de marcação estava hospedado no repositório do github, o gitprint é uma opção interessante para criar pdf / print.

Tudo que você precisa fazer é substituir github.compor gitprint.comno URL. Aqui está um exemplo da página inicial do gitprint.

Infelizmente, ele não funciona em listas de descontos e funciona apenas com arquivos de descontos no repositório.


4
Também não funciona com imagens. :(
Adam Arold 02/02

... e está mal formatado :(
Moebius

Opção interessante. Prós: links externos são mantidos e acessíveis a partir da saída. Contras: a saída é em preto e branco, os links âncora são removidos, os links externos não são indicados visualmente porque são em preto e branco.
Rodey

7

Existe um conversor on-line disponível em http://www.markdowntopdf.com.
Isso fornece destaque de sintaxe imediato e é a solução mais simples que eu já vi até agora. Ele também lida corretamente com outros recursos específicos do GFM, como tabelas.


4
Não manipula imagens em arquivos separados.
Larry K

Funciona lindamente
Shadi

6

Como afirmei no meu comentário, o Github usa o Linguist para fornecer destaque de sintaxe. No Github, você pode usar isso para especificar o destaque da sintaxe da seguinte forma:

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

Infelizmente, não há uma boa maneira de converter o Markdown diretamente em um arquivo PDF com destaque de sintaxe.

Alternativas:

Vim :

Se você possui o vim, pode obter facilmente o destaque da sintaxe executando o seguinte em um terminal:

vim -c hardcopy -c quit /path/to/file.ps

Ou dentro do vim:

:hardcopy >/path/to/file.ps

Isso produzirá um arquivo PostScript que pode ser convertido em pdf usando, por exemplo, ps2pdf:

ps2pdf /path/to/file.ps

Destaque da fonte :

Se você preferir seguir a rota do HTML ou do LaTeX, tente o Source-realce . Uma lista de todos os idiomas suportados pelo destaque da fonte pode ser encontrada aqui .

Alguns exemplos de comandos de destaque da fonte incluem:

source-highlight -s java -f html -i Hello.java -o Hello1.html
source-highlight -s java -f html --input Hello.java --output Hello2.html --doc
source-highlight -s java -f html -i Hello.java -o Hello3.html --title "Happy Java with java2html :-)" --tab 3

Usando este arquivo de entrada

E cada um emitindo seu próprio arquivo HTML:

Hello1.html
Hello2.html
Hello3.html

Outros exemplos de uso de destaque da fonte podem ser encontrados aqui

Windows :

Vim , ps2pdf (fornecido pelo Ghostscript ) e Source-realce estão disponíveis no Cygwin .


4

Para aqueles com Linux, use pandoc .

Instalar:

sudo apt install pandoc texlive-latex-extra

Sim, você precisa do -extrapacote por causa das fontes.

Converter:

pandoc --from markdown -o output.pdf my-file.md

Não incluiu imagens, links e coisas ignoradas, como <font color="red">por exemplo
derHugo 11/01

3

Recentemente, criei um serviço para converter documentos de remarcação para PDF. Ele suporta marcações com sabor do Github, bem como realce de sintaxe. O serviço está localizado em: http://markdown2pdf.com


não funciona com o arquivo zip: não foi possível encontrar o arquivo de remarcação no arquivo enquanto houver um.
Moebius

obteve "erro na conversão para pdf". Usando markdowntopdf.com em vez de kevgathuku
Shadi

1

Solução mine: converta markdown com pandocpara html (não se esqueça de usar css para pandoc para mostrar bordas da tabela) e abra-o com libreoffice, escolha uma opção export as pdf.

NB : nenhuma das soluções mencionadas aqui e na Internet funcionou para mim: 1) as soluções baseadas em navegador (ou seja, grip) estão adicionando informações em excesso, como números de páginas, que não consegui remover; 2) a conversão pandoc para pdf é quebrado, para mim gera uma tabela vazia (talvez por causa do unicode, e sim, eu a configurei para usar xetex) , 3) soluções baseadas em site (por exemplo, gitprint.com) também estão adicionando coisas redundantes, como margens semelhantes ao github, enquanto Eu preciso apenas de uma tabela simples que eu criei com o awk!


1
pandocdeve funcionar para você com opções como--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

@ gluk47 legal, isso funciona!
Hi-Angel

Posso recomendar esta página para converter descontos em PDF (ou imprimir) markdownprint.com .
Johan O

@JohanO markdownprint.com parece estar em baixo
derHugo 11/01

1

Eu tentei vários plugins chrome e conversores online.
MDtr2PDF é o melhor. Ele suporta marcações e unicode com sabor do Github.


1
Ele suporta imagens armazenadas em outros arquivos?
Larry K

Não parece mais estar funcionando e não é protegido por TLS.
David Oliver

1

Refinei este trecho para minhas necessidades pessoais:

# sudo apt install grip wkhtmltopdf

MD=${1:-README.md}
PDF=${2:-"$MD".pdf}
PORT=8971
DELAY=10

printf "Converting $MD to $PDF on port $PORT\n"
printf "Waiting $DELAY seconds for server to start...\n"

grip "$MD" localhost:$PORT &
sleep $DELAY
wkhtmltopdf http://localhost:$PORT "$PDF"
kill $(ps -eo pid,command | grep grip | grep -v grep | awk '{print $1}')

Salve como /usr/local/bin/md2pdfe sudo chmod +x /usr/local/bin/md2pdfdepois.

Uso:

  • md2pdf converte README.md em README.md.pdf

  • md2pdf foo.md converte foo.md em foo.md.pdf

  • md2pdf foo.md bar.pdf converte foo.md em bar.pdf

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.