ไลบรารี .NET สำหรับการแปลง Markdown เป็น PDF ใช้ Markdig เพื่อแปลง markdown เป็น HTML จากนั้น Puppeteer Sharp เพื่อแปลงเอาต์พุตนั้นเป็น PDF
สำหรับแอปพลิเคชัน cli-ข้ามแพลตฟอร์มโดยใช้แพ็คเกจนี้ เช็คเอาท์ Markdown2Pdf.Console
สามารถดู PDF สาธิตฉบับเต็มได้ที่นี่!
ค #:
var converter = new Markdown2PdfConverter ( ) ;
var resultPath = await converter . Convert ( "README.md" ) ;
VB.NET:
Dim converter As New Markdown2PdfConverter()
Dim resultPath As String = Await converter.Convert( "README.md" )
การแจงนับไฟล์มาร์กดาวน์สามารถส่งผ่านไปยังตัวแปลง โดยรวมเป็นไฟล์ PDF เดียว
ชำระเงิน Wiki เพื่อดูเอกสารเพิ่มเติม
หากต้องการระบุกระบวนการแปลงเพิ่มเติม ให้ส่ง Markdown2PdfOptions ไปยังตัวแปลง:
var options = new Markdown2PdfOptions {
HeaderHtml = "<div class= " document-title " style= " background-color: #5eafed; width: 100%; padding: 5px " ></div>" ,
FooterHtml = "<div style= " background-color: #5eafed; width: 100%; padding: 5px " >Page <span class= " pageNumber " ></span>/<span class= " totalPages " ></span></div>" ,
DocumentTitle = "Example PDF" ,
} ;
var converter = new Markdown2PdfConverter ( options ) ;
อีกวิธีหนึ่งสามารถโหลด Markdown2PdfOptions จากบล็อก YAML Front Matter ที่จุดเริ่มต้นของไฟล์ markdown:
var converter = Markdown2PdfConverter . CreateWithInlineOptionsFromFile ( "README.md" ) ;
var resultPath = await converter . Convert ( "README.md" ) ;
ตัวอย่างการใช้งานมีอยู่ที่นี่
ตัวเลือก | คำอธิบาย |
---|---|
ChromePath | เส้นทางไปยัง Chrome หรือ Chromium ที่ปฏิบัติการได้หรือดาวน์โหลดด้วยตนเองหากเป็น null |
ธีมไฮไลท์โค้ด | ธีมที่ใช้สำหรับการเน้นบล็อคโค้ด |
เนื้อหาส่วนหัวแบบกำหนดเอง | string ที่มีเนื้อหาใดๆ ที่ถูกต้องภายใน HTML <head> เพื่อใช้สคริปต์/การจัดรูปแบบเพิ่มเติมกับเอกสาร |
ชื่อเอกสาร | ชื่อของเอกสารนี้ สามารถแทรกลงในส่วนหัว / ท้ายกระดาษได้โดยการเพิ่ม document-title คลาสให้กับองค์ประกอบ |
เปิดใช้งานการตรวจจับภาษาอัตโนมัติ | ตรวจหาภาษาสำหรับบล็อกโค้ดโดยอัตโนมัติโดยไม่มีภาษาที่ระบุ |
FooterHtml | สตริง HTML เพื่อใช้เป็นส่วนท้ายของเอกสาร |
รูปแบบ | รูปแบบกระดาษสำหรับ PDF |
HeaderHtml | สตริง HTML เพื่อใช้เป็นส่วนหัวของเอกสาร |
เป็นภูมิทัศน์ | การวางแนวกระดาษ |
KeepHtml | true หากไม่ควรลบ HTML ที่สร้างขึ้น |
ตัวเลือกมาร์จิ้น | Css-margins สำหรับด้านข้างของเอกสาร |
ตัวเลือกโมดูล | ตัวเลือกที่ตัดสินใจว่าจะโหลดโมดูลเพิ่มเติมจากที่ใด ข้อมูลเพิ่มเติม |
มาตราส่วน | ขนาดของเนื้อหา ต้องอยู่ระหว่าง 0.1 ถึง 2 |
สารบัญ | สร้าง TOC จากส่วนหัวของมาร์กดาวน์ ข้อมูลเพิ่มเติม |
ธีม | สไตล์ที่จะใช้กับเอกสาร |
หากต้องการเพิ่มสารบัญให้แทรก
[TOC]
(ไวยากรณ์ Gitlab)[[_TOC_]]
(ไวยากรณ์ Gitlab)<!-- toc -->
(แสดงความคิดเห็น) ลงในเอกสารมาร์กดาวน์และใช้ตัวเลือก Markdown2PdfOptions.TableOfContents
:
# My Document
[ TOC ]
...
ตัวอย่างการสร้าง TOC:
options . TableOfContents = new TableOfContentsOptions {
ListStyle = ListStyle . Decimal ,
// Include all heading levels from 2 to 4.
MinDepthLevel = 2 ,
MaxDepthLevel = 4
} ;
ส่วนหัวสามารถละเว้นจาก toc ได้โดยการลงท้ายด้วย <!-- omit from toc -->
:
## This header won't be displayed in the TOC <!-- omit from toc -->
TOC ได้รับการสร้างขึ้นภายใน <nav class="table-of-contents">
สามารถใช้เพื่อใช้สไตล์ที่กำหนดเองเพิ่มเติมได้
ตัวเลือก | คำอธิบาย |
---|---|
มีColoredLinks | หากตั้งค่าไว้ ชื่อใน TOC จะได้รับมาร์กอัปลิงก์เริ่มต้น |
รายการสไตล์ | ตัดสินใจว่าจะใช้อักขระใดก่อนชื่อ TOC |
ระดับความลึกสูงสุด | ระดับความลึกสูงสุดของส่วนหัวที่จะรวมไว้ใน TOC |
ระดับความลึกขั้นต่ำ | ระดับความลึกขั้นต่ำของส่วนหัวที่จะรวมไว้ใน TOC |
ตัวเลือกหมายเลขหน้า | หากตั้งค่าไว้ TOC จะถูกสร้างขึ้นพร้อมหมายเลขหน้า |
ไลบรารีนี้ใช้แพ็คเกจ node_modules โดยค่าเริ่มต้น จะมีการโหลดผ่าน CDN ที่โฮสต์ไว้ เช่น https://cdn.jsdelivr.net
คุณยังสามารถใช้การติดตั้งแบบโลคัลได้โดยการติดตั้งแพ็คเกจต่อไปนี้และตั้งค่า Markdown2PdfOptions.ModuleOptions เป็น ModuleOptions.FromLocalPath():
npm i mathjax@3
npm i mermaid@10
npm i font-awesome
npm i @highlightjs/cdn-assets@11
npm i github-markdown-css
npm i latex.css
หมายเหตุ: สำหรับสิ่งนี้คุณต้องติดตั้งและเพิ่ม npm ลงใน
PATH
โมดูล | คำอธิบาย |
---|---|
แมทแจ็กซ์ | การเรนเดอร์ลาเท็กซ์-คณิตศาสตร์ |
เงือก | ไดอะแกรม |
แบบอักษร-ยอดเยี่ยม | ไอคอน (รองรับในไดอะแกรมนางเงือก) |
ไฮไลท์.js | การเน้นไวยากรณ์ |
github-markdown-css | Github-ธีม |
ลาเท็กซ์-css | น้ำยาง-ธีม |
หากต้องการควบคุมการสร้าง HTML ได้มากขึ้น (เช่น เพิ่ม JS-Scripts ของคุณเอง) ให้แก้ไขตัวแปลง ContentTemplate
สำหรับการทดสอบอัตโนมัติ มีโปรเจ็กต์ Markdown2Pdf.Tests อยู่ ก่อนที่จะเริ่มสิ่งเหล่านี้ ให้รัน setup.ps1
Chromium ที่ให้มาซึ่งติดตั้งโดย Puppeteer ไม่ได้มาพร้อมกับการขึ้นต่อกันที่จำเป็นทั้งหมด (ดูการเรียกใช้ Puppeteer ใน Docker)
หากต้องการแก้ไขปัญหานี้ให้ติดตั้งใน .dockerfile
:
RUN apt-get update
&& apt-get install -y wget gnupg
&& wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
&& sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
&& apt-get update
&& apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1
--no-install-recommends
&& rm -rf /var/lib/apt/lists/*
Markdown ได้รับการพัฒนาในตอนแรกเพื่อให้สามารถแปลงเป็น HTML ได้ ด้วยเหตุนี้จึงมีเครื่องมือมากมายในโลก JavaScript ตัวอย่างเช่น Mermaid ใช้งานใน JavaScript เท่านั้น ดังนั้นเราจึงต้องมี JS-engine เพื่อรองรับ ส่งผลให้แพ็คเกจนี้ช้าลง แต่ยังสามารถรองรับคุณสมบัติได้มากกว่าโซลูชันอื่น ๆ ที่สร้าง PDF จาก Markdown โดยตรง