#!/bin/bash # PDF导出测试和诊断脚本 # 用于诊断和解决PDF导出问题 echo "🔍 PDF导出诊断测试..." # 检查依赖 echo "📋 检查依赖工具..." # 检查pandoc if command -v pandoc &> /dev/null; then echo "✅ pandoc: $(pandoc --version | head -1)" else echo "❌ pandoc 未安装" exit 1 fi # 检查xelatex if command -v xelatex &> /dev/null; then echo "✅ xelatex: $(xelatex --version | head -1)" else echo "❌ xelatex 未安装" echo "请安装 MacTeX 或 TeX Live" exit 1 fi # 检查中文字体 echo "" echo "🔤 检查中文字体..." if fc-list | grep -q "STHeiti"; then FONT="STHeiti" echo "✅ 使用字体: STHeiti" elif fc-list | grep -q "SimHei"; then FONT="SimHei" echo "✅ 使用字体: SimHei" elif fc-list | grep -q "PingFang"; then FONT="PingFang-SC" echo "✅ 使用字体: PingFang-SC" else FONT="DejaVu Sans" echo "⚠️ 使用备用字体: DejaVu Sans" fi # 创建测试文档 echo "" echo "📝 创建测试文档..." cat > test_pdf.md << 'EOF' --- title: "PDF导出测试文档" author: "系统测试" date: "2024-12-19" --- # 测试标题 这是一个PDF导出测试文档,用于验证中文显示和pandoc配置。 ## 中文字符测试 - 简体中文:水务营收系统概要设计 - 数字:1234567890 - 英文:Water Business Revenue System ### 特殊字符测试 - 符号:!@#¥%……&*() - 标点:,。?;:""'' - 数学:α β γ δ ε ## 表格测试 | 项目 | 内容 | 备注 | |------|------|------| | 系统名称 | 福建水务营收系统 | 主要业务系统 | | 开发框架 | Spring Boot | 后端框架 | | 前端框架 | Vue 3 | 现代化前端 | ## 代码块测试 ```java public class Test { public static void main(String[] args) { System.out.println("Hello, 世界!"); } } ``` EOF # 测试PDF导出 echo "" echo "🚀 测试PDF导出..." mkdir -p output # 使用改进的pandoc命令 PANDOC_OPTIONS="--pdf-engine=xelatex -V CJKmainfont=$FONT -V geometry:margin=2cm" echo "使用命令: pandoc test_pdf.md -o output/test_export.pdf $PANDOC_OPTIONS" if pandoc test_pdf.md -o output/test_export.pdf $PANDOC_OPTIONS 2>&1; then echo "✅ PDF导出成功!" echo "📄 输出文件: output/test_export.pdf" # 检查文件大小 if [ -f output/test_export.pdf ]; then file_size=$(stat -f%z output/test_export.pdf 2>/dev/null || stat -c%s output/test_export.pdf) echo "📊 文件大小: $file_size 字节" if [ "$file_size" -gt 1000 ]; then echo "✅ PDF文件生成正常" else echo "⚠️ PDF文件可能生成异常(文件过小)" fi fi else echo "❌ PDF导出失败" echo "请检查错误信息" fi # 清理测试文件 rm -f test_pdf.md echo "" echo "🏁 测试完成"