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.

dillmo
fonte
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).

Josh Werts
fonte
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
Quanlong
fonte
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.

Magnus
fonte
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.

rpattabi
fonte
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.

kevgathuku
fonte
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 .

DanteTheEgregore
fonte
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
Andrejs Cainikovs
fonte
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

Saurabh Garg
fonte
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!

Olá anjo
fonte
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.

doclin
fonte
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

fredoverflow
fonte