Bagaimana Saya Mengubah Konversi Github-Flavoured Menjadi PDF

147

Saya baru-baru ini mulai mempelajari penurunan harga untuk digunakan dengan dokumentasi, dan perlu mencetak beberapa halaman penurunan harga saya. Saya ingin menggunakan utilitas command-line, Terminal, dll. Yang memungkinkan saya untuk mengonversi Markdown dengan Github menjadi PDF. Perlu memiliki penyorotan sintaks yang tepat dan tidak harus terlihat mengerikan. Terima kasih atas bantuannya.

dillmo
sumber
Pewarnaan sintaks pada GitHub bukan bagian dari GitHub Flavoured Markdown. Setidaknya sejauh yang saya tahu.
Der Hochstapler
@OliverSalzburg Github menggunakan Linguist untuk memberikan penyorotan sintaksis.
DanteTheEgregore
@dillmo, Konversikan ke HTML terlebih dahulu , lalu gunakan Chrome untuk mencetak-ke-pdf.
Pacerier

Jawaban:

150

Saya telah berhasil menggunakan pegangan untuk menampilkan penurunan harga di Chrome dan kemudian menggunakan opsi "Simpan sebagai PDF" Chrome dalam dialog Print.

pip install grip  
grip your_markdown.md

grip akan membuat penurunan harga di localhost: 5000 - cukup sunting dan segarkan browser. Cetak saat siap.

Ini memberikan representasi yang lebih dapat diandalkan daripada pandoc dan lebih ringan daripada menginstal lateks (diperlukan oleh pandoc untuk pembuatan pdf).

Hasil cetak bukan baris perintah dalam jawaban ini, tetapi masih menemukan ini lebih mudah / lebih dapat diandalkan (tampak 100% seperti Github untuk dokumen yang panjang termasuk gambar yang relatif terkait dan penyorotan kode).

Josh Werts
sumber
2
ini cukup mudah.
s2t2
16
grip your_markdown.md --export your_markdown.htmladalah opsi yang berguna di sini. Mengekspornya ke file html, yang kemudian dapat dicetak dari baris perintah menggunakan sesuatu seperti wkhtmltopdf.
Luke Exton
1
Sayangnya grip membutuhkan akses ke GitHub. Ini tidak berfungsi offline
nowox
6
Atau Anda dapat mengunduh (gratis!) Atom ( atom.io ), buka file Anda di Atom, gunakan kontrol + shift + M untuk melihatnya dalam pratinjau, simpan sebagai html, lalu buka html di browser Chrome Anda dan simpan sebagai pdf.
Andrew Carter
6
Ini memang datang dengan bingkai seperti Github di sekitarnya. Apakah ada cara untuk mencetak ke PDF, menghapus garis batas / judul (yaitu mencetak segala sesuatu di dalam bingkai)?
Joost
56

Anda juga dapat menggunakan markdown-pdf berbasis Node.js

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
Quanlong
sumber
2
Ini sangat mengagumkan dan sangat mudah. Masalah tautan berasal dari css printplate html5 yang bisa Anda komentari atau timpa di stylesheet Anda sendiri.
Robert Went
Ingin menambahkan bahwa ini memiliki dukungan Unicode out-of-the-box, yang sangat bagus.
Niek
Anda juga dapat menginstal github-markdown-css jika Anda ingin menggunakan file CSS GitHub.
jpmc26
@ jpmc26 bagaimana Anda bisa menggunakannya, saya tidak tahu javascript atau npm?
Abhishek Bhatia
1
@AbhishekBhatia Ini adalah hasil pertama ketika saya mencari Google "npm pengantar": smalljs.org/package-managers/npm . Itu hanya sebuah file yang terkubur di node_modules setelah Anda menginstalnya.
jpmc26
39

Lihatlah pandoc . Itu memang memiliki penyorotan sintaksis. Mungkin mengharuskan Anda membuat perubahan (kecil) pada dokumen Anda karena memiliki rasa penurunan harga sendiri dan saya tidak tahu seberapa dekat itu cocok dengan rasa GitHub.

Magnus
sumber
3
Terima kasih. Menjalankan pandoc -hmemang mengembalikan dukungan untuk GitHub Flavoured Markdown, jadi saya menandai pertanyaan ini sebagai terselesaikan.
dillmo
2
Saya mencoba untuk menginstal pandocdi Fedora Linux dan mengalami mimpi buruk ketergantungan - terutama terkait LaTex. Saran saya adalah untuk melewatkan pandoc dan mencoba opsi lain terlebih dahulu
IanB
Bagi mereka yang menggunakan huruf non-ASCII dan menghilangkannya: tambahkan opsi font pandoc, seperti ini:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
4
Jika seseorang mencari hanya perintah: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(di Ubuntu, mungkin tidak semua diperlukan), makapandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg
@ Torlingling Terima kasih, saya pikir itu adalah jawaban terbaik!
thc
12

Jika file penurunan harga di-host di repositori github, gitprint adalah pilihan yang menarik untuk membuat pdf / print.

Yang perlu Anda lakukan adalah mengganti github.comdengan gitprint.comdi URL. Berikut adalah contoh dari beranda gitprint.

Sayangnya, ini tidak bekerja pada inti penurunan harga, dan hanya bekerja dengan file penurunan harga di repositori.

rpattabi
sumber
4
Ini juga tidak bekerja dengan gambar. :(
Adam Arold
... dan formasinya buruk :(
Moebius
Opsi menarik. Kelebihan: tautan eksternal dipertahankan dan dapat diakses dari output. Cons: output hitam dan putih, tautan jangkar dihapus, tautan eksternal tidak diindikasikan secara visual karena merupakan b & w.
rodey
7

Ada konverter online yang tersedia di http://www.markdowntopdf.com.
Ini menyediakan sintaks yang menyoroti di luar kotak dan merupakan solusi paling sederhana yang pernah saya lihat sejauh ini. Itu juga dengan benar menangani fitur-fitur lain khusus untuk GFM misalnya tabel.

kevgathuku
sumber
4
Tidak menangani gambar dalam file terpisah.
Larry K
bekerja dengan indah
shadi
6

Seperti yang saya nyatakan dalam komentar saya, Github menggunakan Linguist untuk memberikan penyorotan sintaksis. Di Github, Anda dapat menggunakan ini untuk menentukan penyorotan sintaks seperti:

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

Sayangnya, tidak ada cara yang baik untuk mengonversi Markdown langsung ke file PDF dengan penyorotan sintaksis.

Alternatif:

Vim :

Jika Anda memiliki vim, Anda dapat dengan mudah mencapai penyorotan sintaks dengan menjalankan yang berikut dari terminal:

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

Atau di dalam vim:

:hardcopy >/path/to/file.ps

Ini akan menghasilkan file PostScript yang dapat dikonversi ke pdf menggunakan, misalnya, ps2pdf:

ps2pdf /path/to/file.ps

Sorotan sumber :

Jika Anda ingin memilih rute HTML atau LaTeX, Anda dapat mencoba Sumber-highlight sebagai gantinya. Daftar semua bahasa yang didukung oleh Sumber-highlight dapat ditemukan di sini .

Beberapa contoh perintah Sumber-sorot meliputi:

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

Menggunakan file input ini

Dan masing-masing mengeluarkan file HTML masing-masing:

Hello1.html
Hello2.html
Hello3.html

Contoh lebih lanjut dari penggunaan Sumber-sorotan dapat ditemukan di sini

Windows :

Vim , ps2pdf (disediakan oleh Ghostscript ) dan Source-highlight semuanya tersedia melalui Cygwin .

DanteTheEgregore
sumber
4

Bagi mereka yang menggunakan Linux, gunakan pandoc .

Pasang:

sudo apt install pandoc texlive-latex-extra

Ya, Anda perlu -extrapaket karena font.

Mengubah:

pandoc --from markdown -o output.pdf my-file.md
Andrejs Cainikovs
sumber
Tidak termasuk setiap gambar, link dan hal-hal diabaikan seperti <font color="red">meskipun
derHugo
3

Baru-baru ini saya membuat layanan untuk mengonversi dokumen penurunan harga ke PDF. Ini mendukung penurunan rasa Github serta penyorotan sintaksis. Layanan ini terletak di: http://markdown2pdf.com

Saurabh Garg
sumber
tidak berfungsi dengan file zip: tidak dapat menemukan file penurunan harga di arsip saat ada.
Moebius
mendapat "kesalahan dalam konversi ke pdf". Menggunakan markdowntopdf.com sebagai gantinya dari kevgathuku
shadi
1

Solusi tambang: konversi markdown pandocmenjadi html (jangan lupa gunakan css untuk pandoc untuk menampilkan batas tabel) , lalu buka dengan libreoffice, pilih opsi export as pdf.

NB : tak satu pun dari yang disebutkan di sini dan di Internet solusi yang bekerja untuk saya: 1) solusi berbasis browser (yaitu pegangan) menambahkan info berlebih, seperti nomor halaman, yang saya tidak berhasil menghapus, 2) konversi pandoc ke pdf adalah rusak, bagi saya itu menghasilkan tabel kosong (mungkin karena unicode, dan ya, saya mengkonfigurasinya untuk menggunakan xetex) , 3) solusi berbasis situs (yaitu gitprint.com) juga menambahkan hal-hal yang berlebihan, seperti margin seperti github, sedangkan Saya hanya perlu tabel sederhana yang saya hasilkan dengan awk!

Hai Malaikat
sumber
1
pandocharus bekerja untuk Anda dengan opsi-opsi seperti--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
@ gluk47 keren, itu berhasil!
Hi-Angel
Saya dapat merekomendasikan halaman ini untuk mengonversi markdown ke PDF (atau untuk mencetak) markdownprint.com .
Johan O
@JohanO markdownprint.com tampaknya turun
derHugo
1

Saya telah mencoba beberapa plugin chrome dan konverter online.
MDtr2PDF adalah yang terbaik. Ini mendukung Github-flavored-markdown dan unicode.

doclin
sumber
1
Apakah ini mendukung gambar yang disimpan dalam file lain?
Larry K
Tampaknya tidak lagi berfungsi, dan tidak dijamin TLS.
David Oliver
1

Saya memperbaiki cuplikan ini untuk kebutuhan pribadi saya:

# 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}')

Simpan sebagai /usr/local/bin/md2pdfdan sudo chmod +x /usr/local/bin/md2pdfsetelahnya.

Pemakaian:

  • md2pdf mengonversi README.md ke README.md.pdf

  • md2pdf foo.md mengkonversi foo.md ke foo.md.pdf

  • md2pdf foo.md bar.pdf mengkonversi foo.md ke bar.pdf

fredoverflow
sumber