UNPKG

@axw_/koishi-plugin-markdown-to-image-service

Version:

一个功能强大的 Markdown 转图片服务,支持丰富的语法和主题,并能处理来自 NapCat 等适配器的文件上传。

69 lines (68 loc) 4.3 kB
import { Context, Schema, Service } from 'koishi'; export declare const inject: { required: string[]; }; export declare const name = "markdown-to-image-service"; export declare const usage = "## \u4F7F\u7528\u65B9\u5F0F\n\n1. **\u76F4\u63A5\u4E0A\u4F20\u6587\u4EF6**: \u5728\u804A\u5929\u4E2D\u76F4\u63A5\u53D1\u9001\u4E00\u4E2A `.md` \u6587\u4EF6\uFF0C\u673A\u5668\u4EBA\u4F1A\u81EA\u52A8\u5C06\u5176\u8F6C\u6362\u4E3A\u56FE\u7247\u3002\n2. **\u4F7F\u7528\u6307\u4EE4**: \u8F93\u5165 `markdown <\u4F60\u7684MD\u6587\u672C>` \u6765\u8F6C\u6362\u7EAF\u6587\u672C\u5185\u5BB9\u3002\n\n---\n### Docker/WSL \u7528\u6237\uFF08\u91CD\u8981\uFF01\uFF09\n\u5982\u679C\u60A8\u7684 Koishi \u548C OneBot \u5B9E\u73B0\uFF08\u5982 NapCat\uFF09\u5728\u4E0D\u540C\u7684 Docker \u5BB9\u5668\u4E2D\uFF0C\u60A8 **\u5FC5\u987B** \u914D\u7F6E\u201C\u8DE8\u73AF\u5883\u8DEF\u5F84\u6620\u5C04\u8BBE\u7F6E\u201D\uFF0C\u5426\u5219**\u65E0\u6CD5\u5904\u7406\u4E0A\u4F20\u7684\u6587\u4EF6**\u3002\n\n- **\u5BB9\u5668\u5185\u8DEF\u5F84\u524D\u7F00**: \u586B\u5165 NapCat \u8FD4\u56DE\u7684\u8DEF\u5F84\u524D\u7F00\uFF0C\u4F8B\u5982 `/app/.config/QQ/NapCat/temp`\n- **\u4E3B\u673A/Koishi\u5BB9\u5668\u8DEF\u5F84\u524D\u7F00**: \u586B\u5165\u4E0E\u4E0A\u8FF0\u8DEF\u5F84\u5BF9\u5E94\u7684\u3001Koishi \u53EF\u4EE5\u8BBF\u95EE\u7684\u8DEF\u5F84\uFF0C\u4F8B\u5982 `/koishi/data/shared_files`\n"; export interface Config { width: number; height: number; deviceScaleFactor: number; waitUntil: "load" | "domcontentloaded" | "networkidle0" | "networkidle2"; timeout: number; enableAutoCacheClear: boolean; enableRunAllCodeChunks: boolean; defaultImageFormat: "png" | "jpeg" | "webp"; mermaidTheme: 'default' | 'dark' | 'forest'; codeBlockTheme: "auto.css" | "default.css" | "atom-dark.css" | "atom-light.css" | "atom-material.css" | "coy.css" | "darcula.css" | "dark.css" | "funky.css" | "github.css" | "github-dark.css" | "hopscotch.css" | "monokai.css" | "okaidia.css" | "one-dark.css" | "one-light.css" | "pen-paper-coffee.css" | "pojoaque.css" | "solarized-dark.css" | "solarized-light.css" | "twilight.css" | "vue.css" | "vs.css" | "xonokai.css"; previewTheme: "atom-dark.css" | "atom-light.css" | "atom-material.css" | "github-dark.css" | "github-light.css" | "gothic.css" | "medium.css" | "monokai.css" | "newsprint.css" | "night.css" | "none.css" | "one-dark.css" | "one-light.css" | "solarized-dark.css" | "solarized-light.css" | "vue.css"; revealjsTheme: "beige.css" | "black.css" | "blood.css" | "league.css" | "moon.css" | "night.css" | "serif.css" | "simple.css" | "sky.css" | "solarized.css" | "white.css" | "none.css"; breakOnSingleNewLine: boolean; enableLinkify: boolean; enableWikiLinkSyntax: boolean; enableEmojiSyntax: boolean; enableExtendedTableSyntax: boolean; enableCriticMarkupSyntax: boolean; frontMatterRenderingOption: 'none' | 'table' | 'code'; enableScriptExecution: boolean; enableHTML5Embed: boolean; HTML5EmbedUseImageSyntax: boolean; HTML5EmbedUseLinkSyntax: boolean; HTML5EmbedIsAllowedHttp: boolean; HTML5EmbedAudioAttributes: string; HTML5EmbedVideoAttributes: string; mathRenderingOption: "KaTeX" | "MathJax" | "None"; mathInlineDelimiters: [string, string][]; mathBlockDelimiters: [string, string][]; mathRenderingOnlineService: string; mathjaxV3ScriptSrc: string; enableOffline: boolean; printBackground: boolean; chromePath: string; puppeteerArgs: string[]; protocolsWhiteList: string; containerPathPrefix?: string; hostPathPrefix?: string; } export declare const Config: Schema<Config>; declare module 'koishi' { interface Context { markdownToImage: MarkdownToImageService; } } declare class MarkdownToImageService extends Service { private readonly config; private browser; private loggerForService; private readonly notebookDirPath; private notebook; constructor(ctx: Context, config: Config); private initBrowser; private initNotebook; private ensureDirExists; private getCurrentTimeNumberString; private generateAndRenderImage; convertToImage(markdownText: string): Promise<Buffer>; } export declare function apply(ctx: Context, config: Config): Promise<void>; export {};