PDF生成工具

一款生产就绪的SaaS平台,用于从HTML、Markdown、文本和URL生成PDF,并提供API密钥管理、速率限制和云存储功能。

  • by ankushthakur2007
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ankushthakur2007/miyami-pdf-mcptool

使用说明

Miyami PDF工具

一个生产就绪的SaaS平台,用于通过API密钥管理、速率限制和云存储从HTML、Markdown、文本和URL生成PDF。

🚀 MCP快速入门

直接在Claude Desktop中使用Miyami PDF工具:

npx @ankush_thxkur/miyami-pdf-tool-mcp-server

看 MCP服务器文档 有关设置说明。

特性

  • 🔐 认证:使用电子邮件/密码进行身份验证
  • 🔑 API密钥管理:生成、管理和吊销API密钥
  • 📄 PDF生成:
    • 将HTML、Markdown或纯文本转换为PDF
    • 从URL生成PDF
    • 可定制的格式(A4、信纸、法律版)
    • 边距、页眉、页脚、横向模式
  • 🚀 PDF操作:
    • 合并多个PDF
    • 提取页面
    • 旋转页面
    • 添加水印
    • 提取文本内容
  • 📊 使用情况分析:跟踪API使用情况并监控费率限制
  • ☁️ 云存储:PDF文件的数据库存储
  • 🔒 安全:行级安全性(RLS)、HMAC-SHA256 API密钥哈希、Vault支持
  • ⚡ 速率限制:可配置的每小时费率限制
  • 🤖 MCP集成:Claude Desktop的模型上下文协议服务器

技术栈

  • 框架:Next.js 14,带应用路由器
  • 语言:TypeScript
  • 数据库:Supabase PostgreSQL
  • 认证:Supabase认证
  • 存储:数据库存储
  • PDF生成:木偶
  • PDF操作:pdf库
  • PDF提取:pdf解析
  • 用户界面:顺风CSS v4,shadcn/ui
  • 验证:佐德

先决条件

  • Node.js 18+和npm/yarn/pnpm
  • Supabase帐户(在以下位置创建一个 网站 supabase.com)

入门指南

1.安装依赖项

npm install
# or
yarn install
# or
pnpm install

2.建立Supabase项目

  1. 首选 网站 supabase.com 并创建一个新项目
  2. 等待项目配置(需要1-2分钟)
  3. 首选 项目设置 → API
  4. 复制项目URL和密钥

3.配置环境变量

创建一个 .env.local 根目录中的文件:

NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

# Generate a secure encryption secret for API key hashing
# Run: openssl rand -base64 32
API_KEY_ENCRYPTION_SECRET=your-generated-secret-here

生成加密密钥:

openssl rand -base64 32

复制输出并将其用作 API_KEY_ENCRYPTION_SECRET 在你的 .env.local 文件。

安全说明:API密钥使用具有此机密的HMAC-SHA256进行哈希。永远不要将此秘密提交给版本控制。看 加密_SETUP.md 了解详情。

4.应用数据库迁移

在安装过程中,已通过MCP工具应用了数据库迁移。创建了以下内容:

  • 表格: api_keys, pdfs, api_usage, pdf_templates
  • 存储: pdfs 具有公共访问权限的bucket
  • 函数: get_usage_stats(), check_rate_limit()
  • RLS政策:所有表都启用了行级安全

通过查看您的Supabase仪表板进行验证→ 表格编辑器.

5.运行开发服务器

npm run dev

打开 http://localhost:3000 查看应用程序。

6.创建帐户

  1. 引导到 http://localhost:3000/signup
  2. 使用您的电子邮件和密码创建新帐户
  3. 检查您的电子邮件以获取确认链接
  4. 登录地址: http://localhost:3000/login

7.生成API密钥

  1. 首选 仪表盘 → API密钥
  2. 点击 创建新密钥
  3. 复制API密钥(您将不会再看到它!)

API使用

从HTML生成PDF

curl -X POST http://localhost:3000/api/pdf/generate \
  -H "x-api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "html": "<h1>Hello World</h1>",
    "options": {"format": "A4"}
  }'

从URL生成PDF

curl -X POST http://localhost:3000/api/pdf/generate-from-url \
  -H "x-api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "A4"
  }'

列出您的PDF

curl -X GET http://localhost:3000/api/pdf/list?page=1&limit=20 \
  -H "x-api-key: your-api-key"

项目结构

pdf-saas/
├── app/
│   ├── (auth)/              # Authentication pages
│   ├── (dashboard)/         # Protected dashboard
│   └── api/                 # API routes
├── lib/
│   ├── supabase/            # Supabase clients
│   ├── pdf/                 # PDF generation/manipulation
│   ├── api/                 # API utilities
│   └── utils/               # Utility functions (crypto, validation)
├── components/ui/           # shadcn/ui components
├── supabase/migrations/     # Database migrations
├── ENCRYPTION_SETUP.md      # Detailed encryption setup guide
├── SETUP_GUIDE.md           # Quick start guide
└── PROJECT_SUMMARY.md       # Detailed project overview

安全

API密钥哈希

API密钥使用 HMAC-SHA256 在存储之前使用秘密加密密钥。这提供了:

  • 防止彩虹桌攻击
  • 加密强单向散列
  • 与数据库的密钥隔离

看 加密_SETUP.md 用于:

  • 详细的安全架构
  • 保险库集成指南(可选)
  • 秘密轮换程序
  • 生产安全检查表

Claude桌面版MCP服务器

该平台包括 模型上下文协议(MCP)服务器 这使Claude Desktop能够直接生成和操作PDF。

快速设置

  1. 构建MCP服务器:

    cd mcp-server
    chmod +x setup.sh
    ./setup.sh
    
  2. 获取API密钥 从仪表板(仪表板→ API密钥)

  3. 配置Claude桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):

    {
      "mcpServers": {
        "pdf-saas": {
          "command": "node",
          "args": ["/absolute/path/to/pdf-saas/mcp-server/dist/index.js"],
          "env": {
            "PDF_API_BASE_URL": "http://localhost:3000",
            "PDF_API_KEY": "your-api-key-here"
          }
        }
      }
    }
    
  4. 重新启动克劳德桌面

可用的MCP工具

  • generate-pdf-from-html -将HTML转换为PDF
  • generate-pdf-from-markdown -将Markdown转换为PDF
  • generate-pdf-from-text -将文本转换为PDF
  • generate-pdf-from-url -将网页转换为PDF
  • merge-pdfs -合并多个PDF
  • extract-pages -拉取特定页面
  • rotate-pages -按角度旋转页面
  • add-watermark -添加文本水印
  • extract-text -提取文本内容
  • get-pdf-info -获取PDF元数据
  • list-pdfs -列出您的PDF

看 mcp服务器/README.md 详细文档。

部署

Vercel(推荐)

  1. 将代码推送到GitHub
  2. Vercel的进口项目
  3. 添加环境变量
  4. 部署

请参阅 文档 了解更多详情。

许可证

麻省理工学院