Làm cách nào tôi có thể chuyển đổi Markdown hương vị Github thành PDF


147

Gần đây tôi đã bắt đầu học Markdown để sử dụng với tài liệu và cần in ra một vài trang Markdown của mình. Tôi muốn sử dụng tiện ích dòng lệnh, Terminal, v.v. cho phép tôi chuyển đổi Markdown có hương vị Github thành PDF. Nó cần phải có cú pháp tô sáng thích hợp và không nên trông khủng khiếp. Cảm ơn vì bất kì sự giúp đỡ.


Cú pháp tô màu trên GitHub không phải là một phần của GitHub Flavored Markdown. Ít nhất là theo như tôi biết.
Der Hochstapler 16/12/13

@OliverSalzburg Github sử dụng Linguist để cung cấp tô sáng cú pháp.
DanteTheEgregore 16/12/13

@dillmo, Chuyển đổi sang HTML trước , sau đó sử dụng Chrome để in thành pdf.
Pacerier

Câu trả lời:


150

Tôi đã thành công khi sử dụng grip để hiển thị đánh dấu trong Chrome và sau đó sử dụng tùy chọn "Lưu dưới dạng PDF" của Chrome trong hộp thoại In.

pip install grip  
grip your_markdown.md

Grip sẽ hiển thị markdown trên localhost: 5000 - chỉ cần chỉnh sửa và làm mới trình duyệt. In khi sẵn sàng.

Điều này mang lại một đại diện đáng tin cậy hơn pandoc và trọng lượng nhẹ hơn so với cài đặt latex (được yêu cầu bởi pandoc cho thế hệ pdf).

Bản in không phải là dòng lệnh trong câu trả lời này, nhưng vẫn thấy điều này dễ dàng / đáng tin cậy hơn (trông giống như Github 100% cho một tài liệu dài bao gồm hình ảnh tương đối được liên kết và tô sáng mã).


2
Điều này là đủ dễ dàng.
s2t2

16
grip your_markdown.md --export your_markdown.htmllà lựa chọn hữu ích ở đây. Xuất nó vào tệp html, sau đó có thể được in từ dòng lệnh bằng cách sử dụng cái gì đó như wkhtmltopdf.
Luke Exton

1
Thật không may, grip cần quyền truy cập vào GitHub. Nó không hoạt động ngoại tuyến
nowox

6
Ngoài ra, bạn có thể tải xuống (miễn phí!) Atom ( atom.io ), mở tệp của mình trong Atom, sử dụng control + shift + M để xem nó trong bản xem trước, lưu dưới dạng html, sau đó mở html trong trình duyệt Chrome của bạn và lưu dưới dạng pdf.
Andrew Carter

6
Điều này không đi kèm với khung giống như Github xung quanh nó. Có cách nào để in ra PDF, loại bỏ các đường viền / thanh tiêu đề (tức là in mọi thứ bên trong khung) không?
Joost

56

Bạn cũng có thể sử dụng markdown-pdf dựa trên Node.js

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

2
Điều này là khá tuyệt vời và thực sự dễ dàng. Vấn đề liên kết xuất phát từ css in của bản tóm tắt html5 mà bạn chỉ có thể nhận xét hoặc ghi đè trong biểu định kiểu của riêng bạn.
Robert Went

Tôi muốn nói thêm rằng điều này có hỗ trợ Unicode ngoài luồng, rất hay.
Niek

Bạn cũng có thể cài đặt github-markdown-css nếu bạn muốn sử dụng tệp CSS của GitHub.
jpmc26

@ jpmc26 làm thế nào bạn có thể sử dụng nó, tôi không có kiến ​​thức về javascript hoặc npm?
Abhishek Bhatia

1
@AbhishekBhatia Đây là kết quả đầu tiên khi tôi giới thiệu "giới thiệu npm ": smalljs.org/package-manager/npm . Nó chỉ là một tệp được chôn trong node_modules sau khi bạn cài đặt nó.
jpmc26

39

Hãy nhìn vào pandoc . Nó không có cú pháp tô sáng. Nó có thể yêu cầu bạn thực hiện các thay đổi (nhỏ) cho tài liệu của mình vì nó có hương vị đánh dấu riêng và tôi không biết nó phù hợp với hương vị GitHub đến mức nào.


3
Cảm ơn. Chạy pandoc -hđã hỗ trợ trả lại cho GitHub Flavored Markdown, vì vậy tôi đánh dấu câu hỏi này là đã được giải quyết.
dillmo

2
Tôi đã cố gắng cài đặt pandoctrên Fedora Linux và gặp ác mộng phụ thuộc - chủ yếu liên quan đến LaTex. Lời khuyên của tôi là bỏ qua pandoc và thử các lựa chọn khác trước
IanB

Đối với những người sử dụng các chữ cái không phải ASCII và bị thiếu: thêm các tùy chọn phông chữ vào pandoc, như sau:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

4
Nếu ai đó đang tìm kiếm chỉ các lệnh: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(trên Ubuntu, có lẽ không cần thiết), thìpandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg

@TorKlingberg Cảm ơn, tôi nghĩ đó là câu trả lời tốt nhất!
THC

12

Nếu tệp markdown được lưu trữ trên kho github, gitprint là một tùy chọn thú vị để tạo pdf / print.

Tất cả bạn cần làm là để thay thế github.combằng gitprint.comtrong URL. Đây là một ví dụ từ trang chủ của gitprint.

Thật không may, nó không hoạt động trên các điểm đánh dấu và chỉ hoạt động với các tệp markdown tại kho lưu trữ.


4
Nó cũng không hoạt động với hình ảnh. :(
Adam Arold

... và được hình thành kém :(
Moebius

Lựa chọn thú vị. Ưu điểm: liên kết bên ngoài được duy trì và truy cập từ đầu ra. Nhược điểm: đầu ra là màu đen và trắng, các liên kết neo bị loại bỏ, các liên kết bên ngoài không được chỉ định trực quan vì chúng là b & w.
cưỡi ngựa

7

Có một trình chuyển đổi trực tuyến có sẵn tại http://www.markdftimeopdf.com
Điều này cung cấp cú pháp tô sáng ra khỏi hộp và là giải pháp đơn giản nhất tôi từng thấy cho đến nay. Nó cũng xử lý chính xác các tính năng khác dành riêng cho GFM, ví dụ như bảng.


4
Không xử lý hình ảnh trong các tập tin riêng biệt.
Larry K

hoạt động rất đẹp
shadi

6

Như tôi đã nói trong nhận xét của mình, Github sử dụng Linguist để cung cấp tô sáng cú pháp. Trên Github, bạn có thể sử dụng điều này để chỉ định đánh dấu cú pháp như vậy:

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

Thật không may, không có cách nào tốt để chuyển đổi trực tiếp Markdown thành tệp PDF có tô sáng cú pháp.

Lựa chọn thay thế:

Vim :

Nếu bạn có vim, bạn có thể dễ dàng đạt được cú pháp tô sáng bằng cách chạy đoạn mã sau từ thiết bị đầu cuối:

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

Hoặc bên trong vim:

:hardcopy >/path/to/file.ps

Điều này sẽ tạo ra một tệp PostScript có thể được chuyển đổi thành pdf bằng cách sử dụng, ví dụ: ps2pdf:

ps2pdf /path/to/file.ps

Nguồn nổi bật :

Thay vào đó, nếu bạn muốn đi theo lộ trình của HTML hoặc LaTeX, bạn có thể thử dùng tô sáng nguồn thay thế. Danh sách tất cả các ngôn ngữ được hỗ trợ bởi Source-highlight có thể được tìm thấy ở đây .

Một vài ví dụ Các lệnh tô sáng nguồn bao gồm:

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

Sử dụng tệp đầu vào này

Và mỗi đầu ra tệp HTML tương ứng của riêng họ:

Hello1.html
Hello2.html
Hello3.html

Các ví dụ khác về việc sử dụng Nguồn-highlight có thể được tìm thấy ở đây

Windows :

Vim , ps2pdf (được cung cấp bởi Ghostscript ) và Source-highlight đều có sẵn thông qua Cygwin .


4

Đối với những người có Linux, hãy sử dụng pandoc .

Tải về:

sudo apt install pandoc texlive-latex-extra

Có, bạn cần -extragói vì phông chữ.

Đổi:

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

Không bao gồm bất kỳ hình ảnh, liên kết và bỏ qua những thứ như <font color="red">mặc dù
derHugo

3

Gần đây tôi đã tạo ra một dịch vụ để chuyển đổi các tài liệu markdown thành PDF. Nó hỗ trợ đánh dấu hương vị Github cũng như tô sáng cú pháp. Dịch vụ này được đặt tại: http://markdown2pdf.com


không hoạt động với tệp zip: không thể tìm thấy tệp đánh dấu trong kho lưu trữ trong khi có tệp.
Moebius

gặp "lỗi khi chuyển đổi sang pdf". Sử dụng markdowntopdf.com thay vì từ kevgathuku
Shadi

1

Giải pháp của tôi: chuyển đổi markdown với pandochtml (đừng quên sử dụng css cho pandoc để hiển thị viền bảng) , sau đó mở nó bằng libreoffice, chọn một tùy chọn export as pdf.

Lưu ý : không có giải pháp nào được đề cập ở đây và trên Internet cho tôi: 1) giải pháp dựa trên trình duyệt (nghĩa là độ bám) đang thêm thông tin dư thừa, như số trang mà tôi không quản lý để xóa, 2) chuyển đổi pandoc sang pdf là bị hỏng, đối với tôi, nó tạo ra một bảng trống (có lẽ vì unicode và vâng, tôi đã cấu hình nó để sử dụng xetex) , 3) giải pháp dựa trên trang web (ví dụ như gitprint.com) cũng đang thêm những thứ dư thừa, như lề như github, trong khi Tôi chỉ cần một bảng đơn giản tôi tạo ra với awk!


1
pandocsẽ phù hợp với bạn với các tùy chọn như--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

@ gluk47 tuyệt vời, hoạt động!
Hi-Angel

Tôi có thể đề xuất trang này để chuyển đổi markdown thành PDF (hoặc để in) markdownprint.com .
Johan O

@JohanO markdownprint.com dường như không hoạt động
derHugo

1

Tôi đã thử một số plugin chrome và bộ chuyển đổi trực tuyến.
MDtr2PDF là tốt nhất. Nó hỗ trợ Github-hương vị-markdown và unicode.


1
Nó có hỗ trợ hình ảnh được lưu trữ trong các tập tin khác?
Larry K

Dường như không còn hoạt động và không được bảo mật bằng TLS.
David Oliver

1

Tôi đã tinh chỉnh đoạn trích này cho nhu cầu cá nhân của mình:

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

Lưu như /usr/local/bin/md2pdfsudo chmod +x /usr/local/bin/md2pdfsau đó.

Sử dụng:

  • md2pdf chuyển đổi README.md thành README.md.pdf

  • md2pdf foo.md chuyển đổi foo.md thành foo.md.pdf

  • md2pdf foo.md bar.pdf chuyển đổi foo.md thành bar.pdf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.