#!/bin/bash # sgClaw 文档一键导出 PDF 脚本 # 使用方法:chmod +x export-all-pdf.sh && ./export-all-pdf.sh echo "============================================================" echo "📄 sgClaw 文档一键导出 PDF" echo "============================================================" echo "" # 创建输出目录 mkdir -p pdfs echo "✅ 创建输出目录: pdfs/" echo "" # 定义需要导出的文档 declare -A docs=( ["协作时间表.html"]="协作时间表_interactive.pdf" ["协作时间表_printable.md"]="协作时间表.pdf" ["协作甘特图_printable.md"]="协作甘特图.pdf" ["团队分工.md"]="团队分工.pdf" ) echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "📋 导出清单" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" # 列出所有文件 for src in "${!docs[@]}"; do if [ -f "$src" ]; then size=$(du -h "$src" | cut -f1) dst="${docs[$src]}" echo " 📄 $src ($size) → pdfs/$dst" fi done echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🚀 选择导出方式" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "1) 自动导出(使用 wkhtmltopdf,需要安装)" echo "2) 浏览器手动打印(推荐,最美观)" echo "3) 在线工具(最简单)" echo "4) VS Code 插件(最专业)" echo "" read -p "请选择 (1-4): " choice case $choice in 1) # 检查 wkhtmltopdf 是否安装 if ! command -v wkhtmltopdf &> /dev/null; then echo "" echo "⚠️ 未安装 wkhtmltopdf,正在尝试安装..." echo "" if command -v apt-get &> /dev/null; then sudo apt-get update && sudo apt-get install -y wkhtmltopdf elif command -v yum &> /dev/null; then sudo yum install -y wkhtmltopdf else echo "❌ 无法自动安装,请手动安装 wkhtmltopdf" echo " 访问: https://wkhtmltopdf.org/downloads.html" exit 1 fi fi echo "" echo "开始自动导出..." echo "" # 导出 HTML 文件 if [ -f "协作时间表.html" ]; then echo "📄 处理: 协作时间表.html" wkhtmltopdf --enable-local-file-access \ --orientation Landscape \ --page-size A4 \ 协作时间表.html \ pdfs/协作时间表_interactive.pdf 2>/dev/null if [ $? -eq 0 ]; then echo " ✅ 成功: pdfs/协作时间表_interactive.pdf" else echo " ❌ 失败" fi fi # 导出 Markdown 文件(先转 HTML) for md_file in 协作时间表_printable.md 协作甘特图_printable.md 团队分工.md; do if [ -f "$md_file" ]; then echo "" echo "📄 处理: $md_file" # 创建临时 HTML temp_html="/tmp/${md_file%.md}.html" cat > "$temp_html" << 'HTML_HEAD' HTML_HEAD # 简单的 Markdown to HTML(保留图片链接) sed 's/^# \(.*\)/

\1<\/h1>/g; s/^## \(.*\)/

\1<\/h2>/g; s/^### \(.*\)/

\1<\/h3>/g' "$md_file" >> "$temp_html" echo '' >> "$temp_html" # 转 PDF pdf_file="pdfs/${md_file%.md}.pdf" pdf_file="${pdf_file/_printable/}" wkhtmltopdf --enable-local-file-access \ --orientation Portrait \ --page-size A4 \ "$temp_html" \ "$pdf_file" 2>/dev/null if [ $? -eq 0 ]; then echo " ✅ 成功: $pdf_file" else echo " ❌ 失败" fi rm -f "$temp_html" fi done echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "✅ 导出完成!" ;; 2) echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🌐 浏览器手动打印步骤" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "正在打开文件..." firefox 协作时间表.html 2>/dev/null & sleep 1 firefox 协作时间表_printable.md 2>/dev/null & sleep 1 firefox 团队分工.md 2>/dev/null & echo "" echo "✅ 已在浏览器中打开文档" echo "" echo "对每个文件:" echo " 1. 按 Ctrl+P(或 Cmd+P)" echo " 2. 目标打印机:选择「另存为 PDF」" echo " 3. 方向:选择「横向」(甘特图)或「纵向」(其他)" echo " 4. 保存到 pdfs/ 目录" echo " 5. 点击「保存」" ;; 3) echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "🌍 在线工具" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "推荐工具:" echo "" echo " 📄 Markdown to PDF:" echo " https://markdown2pdf.com" echo " https://www.markdowntopdf.com" echo "" echo " 🎨 HTML to PDF:" echo " https://www.sejda.com/html-to-pdf" echo " https://html2pdf.com" echo "" echo "使用步骤:" echo " 1. 访问上述网站" echo " 2. 上传文件(见下方文件列表)" echo " 3. 下载生成的 PDF" echo " 4. 保存到 pdfs/ 目录" echo "" echo "文件列表:" echo " • 协作时间表.html" echo " • 协作时间表_printable.md" echo " • 协作甘特图_printable.md" echo " • 团队分工.md" echo "" echo "文件位置: $(pwd)/" # 打开文件管理器 xdg-open . 2>/dev/null & ;; 4) echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "📝 VS Code 插件方法" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "步骤:" echo " 1. 打开 VS Code" echo " 2. 安装插件:Markdown PDF" echo " (Ctrl+Shift+X 搜索 \"Markdown PDF\")" echo "" echo " 3. 打开 Markdown 文件:" echo " code 协作时间表_printable.md" echo " code 协作甘特图_printable.md" echo " code 团队分工.md" echo "" echo " 4. 右键 → \"Markdown PDF: Export (pdf)\"" echo "" echo " 5. PDF 会自动保存到同目录" echo "" # 提供快捷命令 echo "快捷命令:" echo " code 协作时间表_printable.md &" ;; *) echo "" echo "❌ 无效选择" exit 1 ;; esac echo "" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "📊 输出目录" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" echo "PDF 文件将保存到:" echo " $(pwd)/pdfs/" echo "" # 列出已生成的 PDF if ls pdfs/*.pdf 1> /dev/null 2>&1; then echo "已生成的 PDF 文件:" ls -lh pdfs/*.pdf | awk '{printf " • %s (%s)\n", $9, $5}' else echo "(尚无 PDF 文件)" fi echo "" echo "============================================================" echo "完成!🎉" echo "============================================================"