UNPKG

llm-pdf

Version:

Command Line tool to automate LLM and image models to generate a pdf by converting the generated text into markdown format and save it as a pdf document.

107 lines (99 loc) 3.03 kB
import { mdToPdf } from 'md-to-pdf'; import fs from 'fs/promises'; async function generatePdf(markdownContent, outputName) { const isDark = outputName.includes('dark'); await mdToPdf({ content: markdownContent }, { dest: `./${outputName}`, stylesheet: [ 'https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.2.0/github-markdown.min.css', ], body_class: 'markdown-body', css: ` @page { size: A4; margin: 0; padding: 2rem; } .page-break { page-break-after: always; } .markdown-body { font-size: 12px; padding: 30px !important; box-sizing: border-box; min-width: 200px; max-width: 980px; margin: 0 auto; ${isDark ? ` background-color: #1a1a1a !important; color: #c9d1d9 !important; ` : ''} } .markdown-body h1, .markdown-body h2 { ${isDark ? ` color: #ffffff !important; border-left: 4px solid #58a6ff !important; ` : ` color: #24292f !important; border-left: 4px solid #0969da !important; `} border-bottom: none !important; padding-left: 12px !important; margin-left: -16px !important; font-weight: 600 !important; } .markdown-body pre { background-color: ${isDark ? '#161b22' : '#f6f8fa'} !important; padding: 16px; border-radius: 1px; overflow-x: auto; } .markdown-body code { font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace; ${isDark ? 'color: #c9d1d9 !important;' : ''} } .markdown-body table { border-spacing: 0; border-collapse: collapse; display: block; width: 100%; overflow: auto; margin: 15px 0; ${isDark ? ` background-color: #1a1a1a !important; ` : ''} } .markdown-body th { font-weight: 600; background-color: ${isDark ? '#2d333b' : '#f6f8fa'}; } .markdown-body td { ${isDark ? ` background-color: #1a1a1a !important; ` : ''} } .markdown-body th, .markdown-body td { padding: 6px 13px; border: 1px solid ${isDark ? '#404850' : '#dfe2e5'}; } `, highlight_style: isDark ? 'atom-one-dark' : 'github', pdf_options: { margin: '0', printBackground: true, format: 'A4', }, }); } async function convertMarkdownToPdf() { try { const mdContent = await fs.readFile('conversation.md', 'utf-8'); const markdownContent = mdContent.replace(/<think>[\s\S]*?<\/think>/g, ''); await generatePdf(markdownContent, 'output-dark.pdf'); console.log('Dark theme PDF created: output-dark.pdf'); await generatePdf(markdownContent, 'output-light.pdf'); console.log('Light theme PDF created: output-light.pdf'); } catch (error) { console.error('Error converting Markdown to PDF:', error); } } export default convertMarkdownToPdf;