262 lines
9.0 KiB
Bash
Executable File
262 lines
9.0 KiB
Bash
Executable File
#!/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 "============================================================"
|