مكتبة .NET لتحويل Markdown إلى PDF. يستخدم Markdig لتحويل تخفيض السعر إلى HTML ثم Puppeteer Sharp لتحويل هذا الإخراج إلى PDF.
للحصول على تطبيق cli عبر الأنظمة الأساسية باستخدام هذه الحزمة، قم بالخروج من Markdown2Pdf.Console.
يمكن العثور على ملف PDF التجريبي الكامل هنا!
ج#:
var converter = new Markdown2PdfConverter ( ) ;
var resultPath = await converter . Convert ( "README.md" ) ;
فب.نت:
Dim converter As New Markdown2PdfConverter()
Dim resultPath As String = Await converter.Convert( "README.md" )
يمكن أيضًا تمرير تعداد لملفات تخفيض السعر إلى المحول، ودمجها في ملف PDF واحد.
تحقق من ويكي لمزيد من الوثائق.
لتحديد عملية التحويل بشكل أكبر، قم بتمرير 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 في بداية ملف تخفيض السعر:
var converter = Markdown2PdfConverter . CreateWithInlineOptionsFromFile ( "README.md" ) ;
var resultPath = await converter . Convert ( "README.md" ) ;
يمكن العثور على أمثلة الاستخدام لهذا هنا.
خيار | وصف |
---|---|
ChromePath | المسار إلى chrome أو chromium قابل للتنفيذ أو تنزيله ذاتيًا إذا كان null . |
CodeHighlightTheme | السمة المستخدمة لتسليط الضوء على كتل التعليمات البرمجية. |
محتوى الرأس المخصص | string تحتوي على أي محتوى صالح داخل HTML <head> لتطبيق البرمجة النصية/التصميم الإضافي على المستند. |
عنوان الوثيقة | عنوان هذه الوثيقة. يمكن إدخاله في الرأس/التذييل عن طريق إضافة document-title الفصل إلى العنصر. |
تمكين الكشف عن اللغة التلقائية | الكشف التلقائي عن لغة كتل التعليمات البرمجية دون لغة محددة. |
تذييل HTML | سلسلة HTML لاستخدامها كتذييل للمستند. |
شكل | تنسيق الورق لملف PDF. |
HeaderHtml | سلسلة HTML لاستخدامها كرأس للمستند. |
IsLandscape | اتجاه الورق. |
KeepHtml | true إذا لم يتم حذف HTML الذي تم إنشاؤه. |
خيارات الهامش | هوامش Css لجوانب المستند. |
خيارات الوحدة | الخيارات التي تحدد مكان تحميل الوحدات الإضافية. مزيد من المعلومات. |
حجم | مقياس المحتوى. يجب أن يكون بين 0.1 و 2. |
جدول المحتويات | ينشئ جدول محتويات من رؤوس تخفيض السعر. مزيد من المعلومات. |
سمة | النمط الذي سيتم تطبيقه على المستند. |
لإضافة جدول محتويات أدخل
[TOC]
(بناء جملة Gitlab)[[_TOC_]]
(بناء جملة Gitlab)<!-- toc -->
(تعليق) في مستند تخفيض السعر واستخدم خيار Markdown2PdfOptions.TableOfContents
:
# My Document
[ TOC ]
...
مثال لإنشاء جدول المحتويات:
options . TableOfContents = new TableOfContentsOptions {
ListStyle = ListStyle . Decimal ,
// Include all heading levels from 2 to 4.
MinDepthLevel = 2 ,
MaxDepthLevel = 4
} ;
يمكن حذف رأس من جدول المهام بإنهائه بـ <!-- omit from toc -->
:
## This header won't be displayed in the TOC <!-- omit from toc -->
يتم إنشاء جدول المحتويات ضمن <nav class="table-of-contents">
. يمكن استخدام هذا لتطبيق أنماط مخصصة إضافية.
خيار | وصف |
---|---|
HasColoredLinks | إذا تم تعيينها، فإن العناوين الموجودة في جدول المحتويات تحصل على علامة الارتباط الافتراضية. |
ListStyle | يحدد الأحرف التي سيتم استخدامها قبل عناوين جدول المحتويات. |
MaxDepthLevel | الحد الأقصى لمستوى عمق العنوان المطلوب تضمينه في جدول المحتويات. |
MinDepthLevel | الحد الأدنى لمستوى عمق العنوان المراد تضمينه في جدول المحتويات. |
خيارات رقم الصفحة | إذا تم تعيينه، فسيتم إنشاء جدول المحتويات بأرقام الصفحات. |
تستخدم هذه المكتبة حزم 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
.
الوحدة النمطية | وصف |
---|---|
ماثجاكس | تقديم اللاتكس الرياضيات |
حورية البحر | المخططات |
الخط-رائع | الأيقونات (مدعومة ضمن مخططات حورية البحر) |
Highlight.js | تسليط الضوء على بناء الجملة |
جيثب-تخفيض السعر-CSS | جيثب الموضوع |
اللاتكس المغلق | موضوع اللاتكس |
للحصول على مزيد من التحكم في إنشاء HTML (على سبيل المثال، لإضافة نصوص JS الخاصة بك)، قم بتعديل converter.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 لدعمه. يؤدي هذا إلى أن تكون هذه الحزمة أبطأ ولكنها أيضًا قادرة على دعم ميزات أكثر من الحلول الأخرى التي تنشئ ملف PDF مباشرة من Markdown.