ฉันจะแปลง Markdown ที่แต่งกลิ่นรส Github เป็น PDF ได้อย่างไร


147

ฉันเพิ่งเริ่มเรียนรู้ Markdown เพื่อใช้กับเอกสารประกอบและต้องพิมพ์หน้า Markdown ของฉันสองสามหน้า ฉันต้องการใช้ยูทิลิตีบรรทัดคำสั่งเทอร์มินัล ฯลฯ ที่ช่วยให้ฉันสามารถแปลง Markdown ที่ปรุงแต่งกลิ่นรส Github เป็น PDF ต้องมีการเน้นไวยากรณ์ที่เหมาะสมและไม่ควรดูน่ากลัว ขอบคุณสำหรับความช่วยเหลือใด ๆ


การระบายสีไวยากรณ์ใน GitHub ไม่ได้เป็นส่วนหนึ่งของ GitHub Flavoured Markdown อย่างน้อยที่สุดเท่าที่ฉันรู้
Der Hochstapler

@OliverSalzburg Github ใช้Linguistเพื่อจัดเตรียมการเน้นไวยากรณ์
DanteTheEgregore

@dillmo แปลงเป็น HTML ก่อนจากนั้นใช้ Chrome เพื่อพิมพ์เป็น pdf
Pacerier

คำตอบ:


149

ผมเคยประสบความสำเร็จโดยใช้ด้ามจับเพื่อแสดง markdown ใน Chrome แล้วใช้ของ Chrome "บันทึกเป็น PDF" ตัวเลือกในการพิมพ์โต้ตอบ

pip install grip  
grip your_markdown.md

กริปจะทำให้ markdown บน localhost: 5000 - เพียงแค่แก้ไขและรีเฟรชเบราว์เซอร์ พิมพ์เมื่อพร้อม

สิ่งนี้ให้การแสดงที่น่าเชื่อถือมากกว่าแพนโดกและมีน้ำหนักเบากว่าการติดตั้งลาเท็กซ์

การพิมพ์ไม่ใช่บรรทัดคำสั่งในคำตอบนี้ แต่ก็ยังพบว่าเรื่องนี้ง่ายขึ้น / น่าเชื่อถือมากขึ้น (ดู 100% เหมือน Github สำหรับเอกสารขนาดยาวรวมถึงรูปภาพที่ค่อนข้างเชื่อมโยงและการเน้นโค้ด)


2
มันง่ายพอ
s2t2

15
grip your_markdown.md --export your_markdown.htmlเป็นตัวเลือกที่มีประโยชน์ที่นี่ ส่งออกไปยังไฟล์ html ซึ่งสามารถพิมพ์จากบรรทัดคำสั่งโดยใช้บางอย่างเช่น wkhtmltopdf
ลุค Exton

1
น่าเสียดายที่กริปต้องการการเข้าถึง GitHub มันไม่ทำงานครับ
nowox

6
หรือคุณสามารถดาวน์โหลด (ฟรี!) Atom ( atom.io ) เปิดไฟล์ของคุณใน Atom ใช้ control + shift + M เพื่อดูไฟล์ในตัวอย่าง, บันทึกเป็น html, จากนั้นเปิด html ในเบราว์เซอร์ Chrome และบันทึกเป็น pdf
Andrew Carter

6
สิ่งนี้มาพร้อมกับกรอบคล้าย Github รอบ ๆ มีวิธีพิมพ์เป็น PDF โดยลบเส้นขอบ / แถบชื่อเรื่อง (เช่นการพิมพ์ทุกอย่างภายในกรอบ) หรือไม่
Joost

56

นอกจากนี้คุณยังสามารถใช้ markode -pdf แบบ Node.js

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

2
นี่มันช่างน่ากลัวและง่ายจริงๆ ปัญหาการเชื่อมโยงมาจาก css printplate ของ html5 ซึ่งคุณสามารถแสดงความคิดเห็นหรือลบล้างในสไตล์ชีทของคุณเอง
Robert Went

ต้องการเพิ่มว่าสิ่งนี้ได้รับการสนับสนุน Unicode แบบนอกกรอบซึ่งดีมาก
Niek

คุณสามารถติดตั้งgithub-markdown-css ได้หากคุณต้องการใช้ไฟล์ CSS ของ GitHub
jpmc26

@ jpmc26 คุณจะใช้มันอย่างไรฉันไม่รู้ javascript หรือ npm?
Abhishek Bhatia

1
@AbhishekBhatia นี้เป็นผลแรกเมื่อฉัน Googled "NPM แนะนำ": smalljs.org/package-managers/npm มันเป็นเพียงไฟล์ที่ฝังอยู่ใน node_modules เมื่อคุณติดตั้ง
jpmc26

39

ลองดูที่pandoc มันมีการเน้นไวยากรณ์ อาจต้องการให้คุณทำการเปลี่ยนแปลงเล็กน้อยในเอกสารของคุณเนื่องจากมีการทำเครื่องหมายของตัวเองและฉันไม่รู้ว่ามันตรงกับรสชาติของ GitHub มากแค่ไหน


3
ขอบคุณ การทำงานpandoc -hได้รับการสนับสนุนกลับคืนมาเป็น Markdown แต่งกลิ่นของ GitHub ดังนั้นฉันจึงทำเครื่องหมายคำถามนี้ตามที่ได้รับการแก้ไข
dillmo

2
ฉันพยายามติดตั้งpandocบน Fedora Linux และพบกับฝันร้ายพึ่งพา - ส่วนใหญ่เกี่ยวข้องกับ LaTex คำแนะนำของฉันคือการข้าม pandoc และลองตัวเลือกอื่นก่อน
IanB

สำหรับผู้ที่ใช้ตัวอักษรที่ไม่ใช่ ASCII และพวกเขาได้ขาดหายไป: เพิ่มตัวเลือกแบบอักษรไปpandocเช่นนี้:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

4
หากใครบางคนกำลังมองหาเพียงแค่คำสั่ง: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(บน Ubuntu อาจไม่จำเป็นทั้งหมด) ดังนั้นpandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg

@ TorKlingberg ขอบคุณฉันคิดว่านั่นเป็นคำตอบที่ดีที่สุด!
thc

12

หากไฟล์ markdown ถูกโฮสต์บนที่เก็บ github gitprintเป็นตัวเลือกที่น่าสนใจในการสร้าง pdf / พิมพ์

สิ่งที่คุณต้องทำคือการแทนที่github.comด้วยgitprint.comใน URL นี่คือตัวอย่างจากหน้าแรกของ gitprint

น่าเสียดายที่มันใช้งานไม่ได้ในส่วนของ markdown และใช้ได้เฉพาะกับไฟล์ markdown ที่ที่เก็บ


4
มันไม่ทำงานกับภาพอย่างใดอย่างหนึ่ง :(
Adam Arold

... และมีการจัดรูปแบบไม่ดี :(
Moebius

ตัวเลือกที่น่าสนใจ ข้อดี: มีการดูแลรักษาลิงก์ภายนอกและสามารถเข้าถึงได้จากผลลัพธ์ ข้อด้อย: เอาต์พุตเป็นขาวดำลิงก์สมอจะถูกลบออกลิงก์ภายนอกจะไม่ถูกระบุด้วยสายตาเพราะมันเป็น b & w
rodey

7

มีเครื่องมือแปลงแบบออนไลน์ที่http://www.markdowntopdf.com
นี่คือการเน้นไวยากรณ์โดยไม่ต้องเสียเวลาและเป็นวิธีแก้ปัญหาที่ง่ายที่สุดที่ฉันเคยเห็น นอกจากนี้ยังจัดการคุณสมบัติอื่น ๆ ที่ถูกต้องสำหรับ GFM เช่นตารางได้อย่างถูกต้อง


4
ไม่จัดการรูปภาพในไฟล์แยกกัน
Larry K

ทำงานได้อย่างสวยงาม
shadi

6

ตามที่ฉันระบุไว้ในความคิดเห็นของฉัน Github ใช้นักภาษาศาสตร์เพื่อให้การเน้นไวยากรณ์ บน Github คุณสามารถใช้สิ่งนี้เพื่อระบุการเน้นไวยากรณ์ดังนี้:

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

น่าเสียดายที่ไม่มีวิธีที่ดีในการแปลง Markdown เป็นไฟล์ PDF โดยตรงด้วยการเน้นไวยากรณ์

ทางเลือก:

เสียงเรียกเข้า :

หากคุณเป็นกลุ่มคุณสามารถเน้นไวยากรณ์ได้อย่างง่ายดายโดยเรียกใช้สิ่งต่อไปนี้จากเทอร์มินัล:

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

หรือด้านในเป็นกลุ่ม:

:hardcopy >/path/to/file.ps

สิ่งนี้จะสร้างไฟล์ PostScript ที่สามารถแปลงเป็น pdf โดยใช้ตัวอย่างเช่น ps2pdf:

ps2pdf /path/to/file.ps

แหล่งที่มา - เน้น :

หากคุณต้องการเส้นทางของ HTML หรือ LaTeX แทนคุณสามารถลองเน้นที่มาแทน รายชื่อของทุกภาษาได้รับการสนับสนุนจากแหล่งที่มาไฮไลท์สามารถพบได้ที่นี่

ตัวอย่างคำสั่งที่เน้นแหล่งที่มา ได้แก่ :

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

ใช้ไฟล์อินพุตนี้

และแต่ละไฟล์จะแสดงผลไฟล์ HTML ของตนเอง:

Hello1.html
Hello2.html
Hello3.html

ตัวอย่างเพิ่มเติมของการใช้งานแหล่งที่มาเน้นได้ที่นี่

Windows :

ที่เป็นกลุ่ม , ps2pdf (โดยGhostscript ) และแหล่งที่มาของไฮไลท์ที่มีอยู่ทั้งหมดผ่านCygwin


4

สำหรับผู้ที่มีลินุกซ์ใช้pandoc

ติดตั้ง:

sudo apt install pandoc texlive-latex-extra

ใช่คุณต้องใช้-extraแพ็คเกจเนื่องจากใช้แบบอักษร

แปลง:

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

ไม่ได้รวมภาพใด ๆ ที่เชื่อมโยงและสิ่งที่ละเลยเช่น<font color="red">แม้ว่า
derHugo

3

ฉันเพิ่งสร้างบริการเพื่อแปลงเอกสาร markdown เป็น PDF รองรับการทำเครื่องหมาย Github ปรุงแต่งรสรวมถึงการเน้นไวยากรณ์ บริการตั้งอยู่ที่: http://markdown2pdf.com


ไม่ทำงานกับไฟล์ zip: ไม่พบไฟล์ markdown ในไฟล์เก็บถาวรในขณะที่มีอยู่
Moebius

ได้ "ข้อผิดพลาดในการแปลงเป็น pdf" ใช้markdowntopdf.comแทนจาก kevgathuku
shadi

1

วิธีการแก้ปัญหาเหมืองแร่: แปลง markdown กับpandocเป็น HTML (อย่าลืมที่จะใช้ CSS สำหรับ pandocจะแสดงเส้นขอบตาราง)แล้วเปิดด้วยเลือกตัวเลือกlibreofficeexport as pdf

หมายเหตุ : ไม่ได้กล่าวถึงที่นี่และในการแก้ปัญหาอินเทอร์เน็ตทำงานให้ฉัน: 1) โซลูชั่นที่ใช้เบราว์เซอร์(เช่นกริพ)กำลังเพิ่มข้อมูลส่วนเกินเช่นหมายเลขหน้าซึ่งฉันไม่ได้จัดการที่จะลบ 2) การแปลง pandoc เป็น pdf คือ เสียสำหรับฉันมันสร้างตารางว่าง(อาจเป็นเพราะยูนิโค้ดและใช่ฉันกำหนดค่าให้ใช้ xetex) , 3) เว็บไซต์ที่ใช้โซลูชั่น(เช่น gitprint.com)ก็เพิ่มสิ่งที่ซ้ำซ้อนเช่นระยะขอบเหมือน GitHub ในขณะที่ ฉันต้องการเพียงตารางง่ายๆที่ฉันสร้างขึ้นด้วย awk!


1
pandocควรจะทำงานให้คุณด้วยตัวเลือกเช่น--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

@ gluk47 เจ๋งมันใช้งานได้!
Hi-Angel

ฉันสามารถขอแนะนำหน้านี้สำหรับการแปลง markdown เป็น PDF (หรือสำหรับการพิมพ์) markdownprint.com
Johan O

@JohanO markdownprint.comดูเหมือนว่าจะลง
derHugo

1

ฉันได้ลองใช้ปลั๊กอิน Chrome และตัวแปลงออนไลน์หลายตัว
MDtr2PDFนั้นดีที่สุด รองรับ Github-flavored-markdown และ unicode


1
รองรับภาพที่เก็บไว้ในไฟล์อื่นหรือไม่?
Larry K

ดูเหมือนจะไม่ทำงานอีกต่อไปและไม่ปลอดภัย TLS
David Oliver

1

ฉันปรับปรุงตัวอย่างนี้สำหรับความต้องการส่วนบุคคลของฉัน:

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

บันทึกเป็น/usr/local/bin/md2pdfและsudo chmod +x /usr/local/bin/md2pdfหลังจากนั้น

การใช้งาน:

  • md2pdf แปลง README.md เป็น README.md.pdf

  • md2pdf foo.md แปลง foo.md เป็น foo.md.pdf

  • md2pdf foo.md bar.pdf แปลง foo.md เป็น bar.pdf

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.