#!/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 "============================================================"