Files
skill-lib/docs/archive/领导演示资料/docs-scripts/export-all-pdf.sh
2026-03-06 03:36:12 +08:00

262 lines
9.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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'
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<style>
body {
font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
max-width: 900px;
margin: 40px auto;
padding: 20px;
line-height: 1.8;
}
h1 { color: #1e40af; border-bottom: 3px solid #3b82f6; padding-bottom: 10px; }
h2 { color: #2563eb; margin-top: 30px; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
th, td { border: 1px solid #ddd; padding: 10px; }
th { background: #3b82f6; color: white; }
img { max-width: 100%; height: auto; }
code { background: #f1f5f9; padding: 2px 6px; border-radius: 3px; }
pre { background: #1e293b; color: #f1f5f9; padding: 15px; border-radius: 6px; }
</style>
</head>
<body>
HTML_HEAD
# 简单的 Markdown to HTML保留图片链接
sed 's/^# \(.*\)/<h1>\1<\/h1>/g; s/^## \(.*\)/<h2>\1<\/h2>/g; s/^### \(.*\)/<h3>\1<\/h3>/g' "$md_file" >> "$temp_html"
echo '</body></html>' >> "$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 "============================================================"