UNPKG

koishi-plugin-markdown-to-image-service

Version:

Koishi 的 Markdown 转图片服务插件。支持 LaTeX、Mermaid、代码高亮等。

63 lines (62 loc) 3.07 kB
import { Context, Schema, Service } from "koishi"; export declare const inject: { required: string[]; optional: string[]; }; export declare const name = "markdown-to-image-service"; export declare const usage = "## \u547D\u4EE4\n\n### `markdownToImage [markdownText:text]`\n\n\u5C06 Markdown \u6587\u672C\u8F6C\u6362\u4E3A\u56FE\u7247\u3002\n\n- **\u7528\u6CD5 1**\uFF1A`markdownToImage # Hello World`\n- **\u7528\u6CD5 2**\uFF1A\u76F4\u63A5\u8F93\u5165 `markdownToImage`\uFF0C\u6839\u636E\u63D0\u793A\u8F93\u5165 Markdown \u5185\u5BB9\u3002\n\n## \u670D\u52A1\n\n\u672C\u63D2\u4EF6\u63D0\u4F9B `markdownToImage` \u670D\u52A1\uFF0C\u4F9B\u5176\u4ED6\u63D2\u4EF6\u8C03\u7528\u3002\n\n```typescript\nctx.markdownToImage.convertToImage(markdownText: string): Promise<Buffer>\n```\n\n### \u793A\u4F8B\n\n```typescript\nimport { Context, h } from 'koishi'\nimport {} from 'koishi-plugin-markdown-to-image-service'\n\nexport const inject = {\n required: ['markdownToImage'],\n}\n\nexport function apply(ctx: Context) {\n ctx.command('test-md', '\u6D4B\u8BD5 Markdown \u56FE\u7247\u8F6C\u6362')\n .action(async ({ session }) => {\n const markdown = `\n# Hello, Koishi\n\nThis is a test.\n\n- LaTeX: $E=mc^2$\n- Code:\n \\`\\`\\`typescript\n console.log('Hello, world!')\n \\`\\`\\`\n- Mermaid:\n \\`\\`\\`mermaid\n graph TD;\n A-->B;\n A-->C;\n B-->D;\n C-->D;\n \\`\\`\\`\n`\n const imageBuffer = await ctx.markdownToImage.convertToImage(markdown)\n return h.image(imageBuffer, 'image/png')\n })\n}\n```\n\n## QQ \u7FA4\n\n- `956758505`\n"; interface ThemeSettings { pageTheme: "light" | "dark"; codeTheme: string; mermaidTheme: "default" | "dark" | "forest" | "neutral"; } declare const themePresets: Record<string, ThemeSettings>; /** * 渲染相关的配置 */ interface RenderingConfig { width: number; height: number; deviceScaleFactor: number; defaultImageFormat: "png" | "jpeg" | "webp"; waitUntil: "load" | "domcontentloaded" | "networkidle0" | "networkidle2"; } /** * 自定义主题的详细配置 */ interface CustomThemeSettings { pageTheme: "light" | "dark"; codeTheme: string; mermaidTheme: "default" | "dark" | "forest" | "neutral"; } /** * 主题配置,可以是预设模式或自定义模式 */ type ThemeConfig = { mode: "preset"; preset: keyof typeof themePresets; } | { mode: "custom"; custom: CustomThemeSettings; }; export interface Config { rendering: RenderingConfig; theme: ThemeConfig; } export declare const Config: Schema<Config>; declare module "koishi" { interface Context { markdownToImage: MarkdownToImageService; } } declare class MarkdownToImageService extends Service { readonly config: Config; private loggerForService; private md; constructor(ctx: Context, config: Config); private getThemeSettings; private buildHtml; convertToImage(markdownText: string): Promise<Buffer>; } export declare function apply(ctx: Context, config: Config): Promise<void>; export {};