Pustaka .NET untuk mengonversi Markdown ke PDF. Menggunakan Markdig untuk mengonversi penurunan harga ke HTML dan kemudian Puppeteer Sharp untuk mengonversi keluaran tersebut ke PDF.
Untuk aplikasi klien lintas platform yang menggunakan paket ini, checkout Markdown2Pdf.Console.
PDF demo lengkap dapat ditemukan di sini!
C#:
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" )
Pencacahan file penurunan harga juga dapat diteruskan ke konverter, menggabungkannya menjadi satu PDF.
Lihat Wiki untuk dokumentasi lebih lanjut.
Untuk menentukan lebih lanjut proses konversi, teruskan Markdown2PdfOptions ke konverter:
var options = new Markdown2PdfOptions {
HeaderHtml = "" document-title " style= " background-color: #5eafed; width: 100%; padding: 5px " >" ,
FooterHtml = "" background-color: #5eafed; width: 100%; padding: 5px " >Page " pageNumber " >/" totalPages " >" ,
DocumentTitle = "Example PDF" ,
} ;
var converter = new Markdown2PdfConverter ( options ) ;
Alternatifnya, Markdown2PdfOptions dapat dimuat dari blok YAML Front Matter di awal file penurunan harga:
var converter = Markdown2PdfConverter . CreateWithInlineOptionsFromFile ( "README.md" ) ;
var resultPath = await converter . Convert ( "README.md" ) ;
Contoh penggunaan untuk ini dapat ditemukan di sini.
Pilihan | Keterangan |
---|---|
Jalur Chrome | Jalur ke chrome atau chromium dapat dieksekusi atau diunduh sendiri jika null . |
Tema Sorotan Kode | Tema yang digunakan untuk menyorot blok kode. |
Konten Kepala Khusus | Sebuah string yang berisi konten apa pun yang valid di dalam HTML untuk menerapkan skrip/gaya tambahan pada dokumen. |
Judul Dokumen | Judul dokumen ini. Dapat disuntikkan ke header/footer dengan menambahkan kelas document-title ke elemen. |
Aktifkan Deteksi Bahasa Otomatis | Deteksi otomatis bahasa untuk blok kode tanpa bahasa tertentu. |
FooterHtml | String HTML untuk digunakan sebagai footer dokumen. |
Format | Format kertas untuk PDF. |
TajukHtml | String HTML untuk digunakan sebagai header dokumen. |
Adalah Lanskap | Orientasi kertas. |
PertahankanHtml | true jika HTML yang dibuat tidak boleh dihapus. |
Opsi Margin | Css-margin untuk sisi dokumen. |
Opsi Modul | Opsi yang memutuskan di mana memuat modul tambahan. Informasi Lebih Lanjut. |
Skala | Skala konten. Harus antara 0,1 dan 2. |
Daftar isi | Membuat TOC dari header penurunan harga. Informasi Lebih Lanjut. |
Tema | Gaya yang akan diterapkan pada dokumen. |
Untuk menambahkan daftar isi, sisipkan
[TOC]
(Sintaks Gitlab)[[_TOC_]]
(Sintaks Gitlab)
(Komentar) ke dalam dokumen penurunan harga dan gunakan opsi Markdown2PdfOptions.TableOfContents
:
# My Document
[ TOC ]
...
Contoh membuat TOC:
options . TableOfContents = new TableOfContentsOptions {
ListStyle = ListStyle . Decimal ,
// Include all heading levels from 2 to 4.
MinDepthLevel = 2 ,
MaxDepthLevel = 4
} ;
Header dapat dihilangkan dari toc dengan mengakhirinya dengan :
## This header won't be displayed in the TOC
TOC dihasilkan dalam . Ini dapat digunakan untuk menerapkan gaya khusus tambahan.
Pilihan | Keterangan |
---|---|
Memiliki Tautan Berwarna | Jika disetel, judul di TOC mendapatkan markup tautan default. |
Gaya Daftar | Memutuskan karakter mana yang akan digunakan sebelum judul TOC. |
Tingkat Kedalaman Maks | Tingkat kedalaman pos maksimum yang disertakan dalam TOC. |
Tingkat Kedalaman Min | Tingkat kedalaman pos minimum yang disertakan dalam TOC. |
Opsi Nomor Halaman | Jika disetel, TOC akan dibuat dengan nomor halaman. |
Perpustakaan ini menggunakan paket node_modules . Secara default, mereka dimuat melalui CDN tempat mereka dihosting, misalnya https://cdn.jsdelivr.net.
Anda juga dapat menggunakan instalasi lokal dengan menginstal paket berikut dan mengatur Markdown2PdfOptions.ModuleOptions ke 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
Catatan: Untuk ini, Anda perlu menginstal npm dan menambahkan ke
PATH
.
Modul | Keterangan |
---|---|
MatematikaJax | Rendering Lateks-Matematika |
Putri duyung | Diagram |
Font-Luar Biasa | Ikon (Didukung dalam diagram putri duyung) |
Sorot.js | Penyorotan sintaksis |
github-penurunan harga-css | Tema Github |
lateks-css | Tema Lateks |
Untuk mendapatkan kontrol lebih besar atas pembuatan HTML (misalnya untuk menambahkan JS-Script Anda sendiri), modifikasi converter.ContentTemplate.
Untuk pengujian otomatis, proyek Markdown2Pdf.Tests ada. Sebelum memulai ini, jalankan setup.ps1.
Paket Chromium yang diinstal oleh Puppeteer tidak dikirimkan dengan semua dependensi yang diperlukan (Lihat Menjalankan Puppeteer di Docker).
Untuk mengatasi ini, instal di .dockerfile
Anda:
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 awalnya dikembangkan agar dapat dikonversi ke HTML. Oleh karena itu, banyak peralatannya yang ada di dunia JavaScript. Misalnya Mermaid hanya diimplementasikan dalam JavaScript, jadi kita memerlukan mesin JS untuk mendukungnya. Hal ini menyebabkan paket ini menjadi lebih lambat tetapi juga mampu mendukung lebih banyak fitur dibandingkan solusi lain yang langsung menghasilkan PDF dari Markdown.