Skip to main content
Glama

word2img-mcp

by AdolphNB
final_demo.py9.47 kB
#!/usr/bin/env python3 """ imgkit/wkhtmltopdf 方案最终演示 展示完整的实现效果和功能特性 """ import os import sys from pathlib import Path # 添加项目目录到路径 sys.path.insert(0, str(Path(__file__).parent)) from word2img_mcp.render import RenderOptions, render_markdown_text_to_image def create_comprehensive_demo(): """创建全面的功能演示""" demo_markdown = """ # 🎉 imgkit/wkhtmltopdf 方案演示 欢迎体验基于 **imgkit** 和 **wkhtmltopdf** 的高质量 Markdown 渲染方案! ## ✨ 核心特性展示 ### 🎨 渲染质量 使用专业的 HTML 渲染引擎,提供**出色的视觉效果**和*精确的排版控制*。 ### 🌐 完整的 Markdown 支持 #### 文本格式化 - **粗体文字** 用于强调重点内容 - *斜体文字* 用于表示引用或特殊含义 - `行内代码` 用于展示代码片段 - ~~删除线文字~~ 用于表示过时内容 #### 列表功能 **有序列表:** 1. 第一项内容 2. 第二项内容 - 嵌套项目 A - 嵌套项目 B 3. 第三项内容 **无序列表:** - ✅ 高质量渲染 - ✅ 丰富样式支持 - ✅ 完整 Markdown 语法 - ✅ 智能回退机制 ### 📊 表格展示 | 渲染后端 | 质量评分 | 速度评分 | 功能评分 | 推荐度 | |----------|----------|----------|----------|--------| | imgkit/wkhtmltopdf | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 🥇 首选 | | markdown-pdf | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 🥈 备选 | | PIL 本地渲染 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | 🥉 保底 | ### 💻 代码展示 ```python # 使用 imgkit 方案进行渲染 from word2img_mcp.render import RenderOptions, render_markdown_text_to_image def create_beautiful_image(): options = RenderOptions( width=1200, height=1600, background=(255, 255, 255), # 纯白背景 text_color=(0, 0, 0), # 深色文字 accent_color=(70, 130, 180), # 优雅蓝色 font_family="Microsoft YaHei, Arial", watermark=True, shadow=True ) return render_markdown_text_to_image(markdown_text, options) ``` ```bash # 安装和配置指南 # 1. 安装 Python 依赖 uv add imgkit markdown # 2. 安装 wkhtmltopdf # Windows: 从官网下载安装包 # macOS: brew install wkhtmltopdf # Linux: apt-get install wkhtmltopdf # 3. 运行演示 uv run python final_demo.py ``` ### 📝 引用块展示 > **"imgkit + wkhtmltopdf 为 Markdown 渲染带来了革命性的改进, > 它结合了 HTML 的灵活性和专业渲染引擎的高质量输出。"** > > — 技术架构师 > 💡 **小贴士**: 如果没有安装 wkhtmltopdf,系统会自动回退到其他可用的渲染后端, > 确保在任何环境下都能正常工作。 --- ## 🔧 技术架构 ### 多后端设计 系统采用智能多后端架构,优先级如下: 1. **imgkit/wkhtmltopdf** (最高优先级) - 使用 HTML/CSS 渲染引擎 - 支持复杂样式和布局 - 输出质量最佳 2. **markdown-pdf-cli** - Node.js 生态系统支持 - 快速 PDF 生成 - 良好的兼容性 3. **PIL 备选方案** (保底选择) - 纯 Python 实现 - 无外部依赖 - 确保基础可用性 ### 样式系统 - **动态 CSS 生成**: 根据配置参数实时生成样式 - **响应式设计**: 自适应不同尺寸要求 - **主题支持**: 亮色/暗色主题一键切换 - **字体优化**: 完美支持中文字体渲染 --- ## 🎯 使用场景 ### 🏢 企业文档 - 技术文档生成 - 报告制作 - 品牌化内容 ### 📚 教育培训 - 课件制作 - 学习资料 - 考试题目 ### 🎨 内容创作 - 博客配图 - 社交媒体内容 - 营销材料 --- **感谢使用 imgkit/wkhtmltopdf 渲染方案!** 如果您看到这张精美的图片,说明我们的实现完全成功!🎉✨ """ # 创建多种样式的演示 demos = [ { "name": "🎨 默认主题", "filename": "demo_default_theme", "options": RenderOptions( width=1200, height=1800, background=(255, 255, 255), text_color=(0, 0, 0), accent_color=(70, 130, 180), align="left", font_size=16, watermark=True, watermark_text="imgkit/wkhtmltopdf Demo", output_format="png" ) }, { "name": "🌙 暗色主题", "filename": "demo_dark_theme", "options": RenderOptions( width=1200, height=1800, background=(33, 37, 41), text_color=(248, 249, 250), accent_color=(108, 117, 125), align="left", font_size=16, shadow=True, watermark=True, watermark_text="Dark Theme by imgkit", output_format="png" ) }, { "name": "📱 居中样式", "filename": "demo_center_style", "options": RenderOptions( width=1000, height=1600, background=(248, 249, 250), text_color=(33, 37, 41), accent_color=(13, 110, 253), align="center", font_size=18, line_height=1.8, shadow=True, watermark=True, watermark_text="Centered Layout Demo", output_format="jpg" ) } ] print("🚀 开始生成 imgkit/wkhtmltopdf 全功能演示...") print("=" * 60) # 确保输出目录存在 output_dir = Path("outputs") output_dir.mkdir(exist_ok=True) results = [] for i, demo in enumerate(demos, 1): print(f"\n{i}. 生成 {demo['name']} 演示...") try: output_path = render_markdown_text_to_image(demo_markdown, demo["options"]) if os.path.exists(output_path): file_size = os.path.getsize(output_path) print(f" ✅ 生成成功: {output_path}") print(f" 📊 文件大小: {file_size / 1024:.1f} KB") # 检测使用的后端 filename = os.path.basename(output_path) if "imgkit" in filename: backend = "imgkit/wkhtmltopdf ⭐" elif "md_pdf" in filename: backend = "markdown-pdf" elif "pil" in filename: backend = "PIL (备选)" else: backend = "其他" print(f" 🎯 使用后端: {backend}") results.append({"demo": demo["name"], "path": output_path, "backend": backend, "size": file_size}) else: print(f" ❌ 文件生成失败") results.append({"demo": demo["name"], "path": None, "backend": "失败", "size": 0}) except Exception as e: print(f" ❌ 渲染失败: {e}") results.append({"demo": demo["name"], "path": None, "backend": "错误", "size": 0}) return results def show_final_summary(results): """显示最终总结""" print("\n" + "=" * 60) print("📊 演示结果总结") print("=" * 60) successful = [r for r in results if r["path"] is not None] failed = [r for r in results if r["path"] is None] print(f"✅ 成功生成: {len(successful)}/{len(results)} 个演示") if successful: print("\n🎉 成功生成的演示:") for result in successful: print(f" • {result['demo']}") print(f" 文件: {os.path.basename(result['path'])}") print(f" 后端: {result['backend']}") print(f" 大小: {result['size'] / 1024:.1f} KB") print() if failed: print("\n⚠️ 未能生成的演示:") for result in failed: print(f" • {result['demo']} - {result['backend']}") # 检查 imgkit 后端使用情况 imgkit_used = any("imgkit" in r["backend"] for r in successful) print("\n" + "=" * 60) if imgkit_used: print("🎯 **imgkit/wkhtmltopdf 后端运行正常!** ") print(" 您的系统已正确配置 wkhtmltopdf,享受最佳渲染质量!") else: print("⚙️ **系统使用备选后端**") print(" 要获得最佳效果,请安装 wkhtmltopdf:") print(" • Windows: https://wkhtmltopdf.org/downloads.html") print(" • macOS: brew install wkhtmltopdf") print(" • Linux: sudo apt-get install wkhtmltopdf") print(f"\n📁 所有文件保存在: {Path('outputs').absolute()}") print(f"📚 详细使用说明: IMGKIT_USAGE.md") print(f"🔧 实现总结: IMGKIT_IMPLEMENTATION_SUMMARY.md") def main(): """主函数""" print("🎨 imgkit/wkhtmltopdf 方案最终演示") print("🚀 展示完整的实现效果和功能特性") print() # 运行演示 results = create_comprehensive_demo() # 显示总结 show_final_summary(results) print("\n🎉 演示完成!感谢使用 imgkit/wkhtmltopdf 渲染方案!") if __name__ == "__main__": main()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AdolphNB/md2img-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server