#!/bin/bash set -e echo "=== Chrome PDF生成中文字体支持一键配置脚本 ===" echo "功能:安装Arial和Microsoft YaHei字体,配置字体映射,测试PDF生成" echo "支持系统:Ubuntu/Debian/CentOS/RHEL/Alibaba Linux" echo "" # 检查是否为root用户 if [ "$EUID" -ne 0 ]; then echo " 请使用root用户运行此脚本(sudo ./setup_chrome_fonts.sh)" exit 1 fi # 安装字体管理工具 echo "1. 安装字体管理工具..." if command -v apt-get &> /dev/null; then # Ubuntu/Debian系统 apt-get update -y apt-get install -y fontconfig wget elif command -v yum &> /dev/null; then # CentOS/RHEL系统 yum install -y fontconfig wget else echo " 错误:不支持的操作系统(仅支持Ubuntu/Debian和CentOS/RHEL)" exit 1 fi echo " 字体管理工具安装完成" # 创建字体目录 echo " 2. 创建字体目录..." mkdir -p /usr/share/fonts/chinese # 安装Microsoft YaHei字体 echo " 3. 安装Microsoft YaHei字体..." wget -O /usr/share/fonts/chinese/msyh.ttf "https://github.com/imfing/fonts/raw/master/win/Microsoft%20YaHei.ttf" 2>/dev/null || { echo " 无法从GitHub下载Microsoft YaHei字体,尝试使用系统内置字体" # 尝试安装系统内置的中文字体包 if command -v apt-get &> /dev/null; then apt-get install -y fonts-wqy-zenhei fonts-wqy-microhei fonts-noto-cjk elif command -v yum &> /dev/null; then # 对于RHEL/CentOS/Alibaba Linux系统 echo "尝试安装Noto CJK字体..." yum install -y google-noto-cjk-fonts google-noto-sans-fonts google-noto-serif-fonts 2>/dev/null || { echo "尝试安装文泉驿字体..." # 对于Alibaba Linux 8,文泉驿字体可能在其他仓库 yum install -y epel-release 2>/dev/null yum install -y wqy* 2>/dev/null || echo " 文泉驿字体包未找到,但将配置字体映射" } fi } echo " Microsoft YaHei字体安装/配置完成" # 安装Arial字体(通常已安装,但确保可用) echo " 4. 确保Arial字体可用..." if command -v apt-get &> /dev/null; then apt-get install -y ttf-mscorefonts-installer elif command -v yum &> /dev/null; then # 对于RHEL/CentOS/Alibaba Linux系统 echo "安装Microsoft核心字体依赖..." yum install -y curl cabextract xorg-x11-font-utils fontconfig # 尝试从SourceForge安装 rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm 2>/dev/null || { echo "尝试从其他源安装Microsoft核心字体..." # 手动下载并安装Arial字体 wget -O /usr/share/fonts/chinese/arial.ttf "https://github.com/imfing/fonts/raw/master/win/Arial.ttf" 2>/dev/null || echo "⚠️ 无法下载Arial字体,但系统可能已内置" } fi echo " Arial字体配置完成" # 创建字体映射配置 echo " 5. 配置字体映射..." mkdir -p /etc/fonts/conf.d # 创建Microsoft YaHei到文泉驿字体的映射 cat > /etc/fonts/conf.d/60-microsoft-yahei.conf << 'EOF' <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias> <family>Microsoft YaHei</family> <prefer> <family>WenQuanYi Micro Hei</family> <family>WenQuanYi Micro Hei Mono</family> <family>Noto Sans CJK SC</family> <family>sans-serif</family> </prefer> </alias> </fontconfig> EOF echo " 已创建字体映射:将Microsoft YaHei映射到系统已安装的中文字体" # 更新字体缓存 echo " 6. 更新字体缓存..." mkfontscale /usr/share/fonts/chinese mkfontdir /usr/share/fonts/chinese fc-cache -fv echo " 字体缓存更新完成" # 验证字体安装 echo " 7. 验证字体安装和映射..." echo "已安装的相关字体:" fc-list | grep -i "yahei\|microsoft\|arial\|noto\|wqy" | head -10 echo " 字体映射验证:" fc-match "Microsoft YaHei" # 生成测试HTML和PDF echo " 8. 生成测试HTML和PDF..." # 创建测试HTML文件 echo '<html> <head> <meta charset="UTF-8"> <style> body { font-family: "Microsoft YaHei", Arial, sans-serif; padding: 20px; text-align: center; } @page { margin: 20mm; @top-center { content: none !important; } @bottom-center { content: none !important; } } </style> </head> <body> <h1>Chrome PDF中文字体测试</h1> <h2>中文标题测试</h2> <p>这是一段中文测试文本,用于验证Chrome在生成PDF时的中文字体显示效果。</p> <p>English test text to verify Arial font display.</p> <p>数字和符号测试:1234567890 !@#$%^&*</p> <p style="font-size: 18px;">大字体中文测试</p> <p style="font-size: 12px;">小字体中文测试</p> <div style="margin-top: 50px;"> <p>测试时间:$(date)</p> </div> </body> </html>' > ./test_chrome_fonts.html echo " 测试HTML已生成:./test_chrome_fonts.html" # 使用Chrome生成PDF if [ -f /opt/google/chrome/chrome ]; then echo " 使用Chrome生成测试PDF..." /opt/google/chrome/chrome --headless --disable-gpu --no-sandbox --disable-setuid-sandbox --print-to-pdf-no-header --print-to-pdf=./test_chrome_fonts.pdf ./test_chrome_fonts.html if [ $? -eq 0 ]; then echo " PDF生成成功:./test_chrome_fonts.pdf" else echo " PDF生成失败,请检查Chrome配置" fi else echo " 未找到Chrome执行文件,请确保Chrome已安装在/opt/google/chrome/目录" fi # 显示测试结果 echo " === Chrome PDF字体配置完成 ===" echo "" echo " 测试文件位置:" echo "- HTML测试文件:./test_chrome_fonts.html" echo "- PDF测试文件:./test_chrome_fonts.pdf"Chrome PDF生成中文字体支持一键配置脚本
张小明
前端开发工程师
嵌入式AI部署优化:5分钟快速部署与3倍性能提升实战指南
嵌入式AI部署优化:5分钟快速部署与3倍性能提升实战指南 【免费下载链接】ultralytics ultralytics - 提供 YOLOv8 模型,用于目标检测、图像分割、姿态估计和图像分类,适合机器学习和计算机视觉领域的开发者。 项目地址: https://gitcode.co…
OpenBoardView终极指南:5个高效查看.brd文件的完整方法
OpenBoardView终极指南:5个高效查看.brd文件的完整方法 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView 还在为无法直观查看电路板设计文件而烦恼吗?OpenBoardView作为一款专业的开源…
突破传统:3个技巧让你轻松驾驭中文竖排排版
突破传统:3个技巧让你轻松驾驭中文竖排排版 【免费下载链接】smiley-sans 得意黑 Smiley Sans:一款在人文观感和几何特征中寻找平衡的中文黑体 项目地址: https://gitcode.com/gh_mirrors/smi/smiley-sans 还在为中文竖排排版中的标点错位、文字方…
Jellyfin终极美化指南:5个简单步骤打造个性化媒体中心
Jellyfin终极美化指南:5个简单步骤打造个性化媒体中心 【免费下载链接】awesome-jellyfin A collection of awesome Jellyfin Plugins, Themes. Guides and Companion Software (Not affiliated with Jellyfin) 项目地址: https://gitcode.com/gh_mirrors/aw/awes…
HarmonyOS 5.0 WiFi连接调试工具
基于HarmonyOS 5.0开发的WiFi连接调试工具,通过标准WiFi AT指令控制WiFi模块,实现网络连接、数据通信和设备管理功能。支持ESP8266/ESP32等常见WiFi模块,适用于物联网设备调试和网络通信测试。1. 核心功能AT指令控制:支持发送标准…
平板导热仪2025最新厂家推荐排行榜,成本直降30%深度解析
在挑选平板导热仪时,企业常常面临诸多难题。比如,部分导热仪测量精度不足,导致实验数据偏差大,影响产品研发进程;还有些导热仪操作复杂,需要耗费大量人力去学习和操作,增加了企业的人力成本。基…