Markdown2Pdf 1.3.0
See the version list below for details.
dotnet add package Markdown2Pdf --version 1.3.0
NuGet\Install-Package Markdown2Pdf -Version 1.3.0
<PackageReference Include="Markdown2Pdf" Version="1.3.0" />
paket add Markdown2Pdf --version 1.3.0
#r "nuget: Markdown2Pdf, 1.3.0"
// Install Markdown2Pdf as a Cake Addin #addin nuget:?package=Markdown2Pdf&version=1.3.0 // Install Markdown2Pdf as a Cake Tool #tool nuget:?package=Markdown2Pdf&version=1.3.0
<p align="center"> <a href="https://www.nuget.org/packages/Markdown2Pdf" target="_blank"> <img alt="Nuget" src="https://img.shields.io/nuget/v/Markdown2Pdf"> </a>
<a href="https://github.com/Flayms/Markdown2Pdf/actions/workflows/build-and-release.yml" target="_blank"> <img src="https://github.com/Flayms/Markdown2Pdf/actions/workflows/build-and-release.yml/badge.svg?event=workflow_dispatch" alt="Build and Release" /> </a> </p>
<h1 align="center"> Markdown2Pdf</h1>
<p align="center"> <img src="./assets/md2pdf.svg" alt="Logo" Width=128px/> <br> </p>
.NET library for converting Markdown to PDF. Uses Markdig for converting markdown to html and then Puppeteer Sharp to convert that output to PDF. For a cross-platform console-application checkout Markdown2Pdf.Console.
A demo can be found here!
Usage
var converter = new Markdown2PdfConverter();
var resultPath = await converter.Convert("README.md");
An enumeration of markdown files can also be passed to the converter, combining them into one PDF.
Options
To further specify the conversion process, pass Markdown2PdfOptions
to the converter:
var options = new Markdown2PdfOptions {
HeaderUrl = "header.html",
FooterUrl = "footer.html",
DocumentTitle = "Example PDF",
};
var converter = new Markdown2PdfConverter(options);
Option | Description | Default |
---|---|---|
ModuleOptions |
Options that decide from where to load additional modules. | ModuleOptions.Remote |
Theme |
The styling to apply to the document. | Theme.Github |
CodeHighlightTheme |
The theme to use for highlighting code blocks. | CodeHighlightTheme.Github |
EnableAutoLanguageDetection |
Auto detect the language for code blocks without specfied language. | false |
HeaderUrl |
Path to an html-file to use as the document header. More Information. | null |
FooterUrl |
Path to an html-file to use as the document footer. More Information. | null |
DocumentTitle |
The title of this document. Can be injected into the header / footer by adding the class document-title to the element. |
null |
CustomHeadContent |
A string containing any content valid inside a html <head> to apply extra scripting / styling to the document.. More Information. |
null |
ChromePath |
Path to chrome or chromium executable or self-downloads it if null . |
null |
KeepHtml |
true if the created html should not be deleted. |
false |
MarginOptions |
Css-margins for the sides of the document. | null |
IsLandscape |
Paper orientation. | false |
Format |
The paper format for the PDF. | A4 |
Scale |
Scale of the content. Must be between 0.1 and 2. | 1 |
TableOfContents |
Creates a TOC out of the markdown headers and writes it into a `` comment within the markdown document. | null |
Header and Footer
With the Markdown2PdfOptions.HeaderUrl
and Markdown2PdfOptions.FooterUrl
options a path to a local file containing html for the Header / Footer can be set.
Html-elements with the classes date
, title
, document-title
, url
, pageNumber
will get their content replaced based on the information. Note that document-title
can be set with the option Markdown2PdfOptions.DocumentTitle
.
Customization
Custom head content can be set with the Markdown2PdfOptions.CustomHeadContent
option.
Example adding PDF pagebreaks:
options.CustomHeadContent = "<style>h1, h2, h3 { page-break-before: always; }</style>";
Modules
This library uses node_modules packages. By default they're loaded over the CDN they're hosted on e.g. https://cdn.jsdelivr.net.
You can also use a local installation by installing the following packages and setting Markdown2PdfOptions.ModuleOptions
to ModuleOptions.FromLocalPath()
:
npm i mathjax@3
npm i mermaid@10
npm i @highlightjs/cdn-assets@11
npm i github-markdown-css
npm i latex.css
Note: For this you need to have npm installed and added to
PATH
.
Module | Description |
---|---|
MathJax | Latex-Math rendering |
Mermaid | Diagrams |
Highlight.js | Syntax highlighting |
github-markdown-css | Github-Theme |
latex-css | Latex-Theme |
Further modification
To get more control over the HTML generation (e.g. to add your own JS-Scripts), modify the converter.ContentTemplate
.
Running in Docker
The bundled Chromium that get's installed by Puppeteer doesn't ship with all necessary dependencies (See Running Puppeteer in Docker).
To resolve this install them in your .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/*
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Markdig (>= 0.34.0)
- PuppeteerSharp (>= 14.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.2.1 | 5,733 | 5/25/2024 |
2.2.0 | 165 | 5/15/2024 |
2.1.0 | 568 | 4/23/2024 |
2.0.0 | 362 | 4/7/2024 |
1.3.0 | 938 | 2/8/2024 |
1.2.0 | 119 | 1/30/2024 |
1.1.0 | 106 | 1/26/2024 |
1.0.1 | 118 | 1/20/2024 |
1.0.0 | 2,628 | 9/3/2023 |
0.5.2 | 191 | 7/23/2023 |
0.5.1 | 161 | 7/18/2023 |
0.4.0 | 155 | 7/17/2023 |
0.3.4 | 146 | 7/16/2023 |
0.3.3 | 146 | 7/16/2023 |
0.3.2 | 151 | 7/13/2023 |
0.3.1 | 152 | 7/10/2023 |