#!/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生成中文字体支持一键配置脚本
张小明
前端开发工程师
突破限制!Netflix 4K超高清画质一键解锁指南
突破限制!Netflix 4K超高清画质一键解锁指南 【免费下载链接】netflix-4K-DDplus MicrosoftEdge(Chromium core) extension to play Netflix in 4K(Restricted)and DDplus audio 项目地址: https://gitcode.com/gh_mirrors/ne/netflix-4K-D…
Sonar CNES Report:企业级代码质量报告自动化生成终极解决方案
在当今快节奏的软件开发环境中,代码质量报告已成为DevOps流程中不可或缺的一环。然而,传统的手动报告生成方式效率低下且容易出错,这正是Sonar CNES Report要解决的核心问题。作为专业的自动化分析工具,它能够从SonarQube服务器智…
AI那些趣事系列114:DeepSeekMath-V2 解锁 AI 数学推理新范式:让模型自己 “检查作业”
导读:本文是 “数据拾光者” 专栏的第一百一十四篇文章,这个系列聚焦自然语言处理和大模型相关实践。今天主要分享DeepSeekMath-V2 解锁 AI 数学推理新范式:让模型自己 “检查作业”,IMO 金牌 Putnam 近满分!欢迎转载…
5分钟快速上手:douyin-live-go抖音直播数据采集终极实战指南
5分钟快速上手:douyin-live-go抖音直播数据采集终极实战指南 【免费下载链接】douyin-live-go 抖音(web) 弹幕爬虫 golang 实现 项目地址: https://gitcode.com/gh_mirrors/do/douyin-live-go 在直播电商爆发的时代,你是否曾为无法实时获取直播间…
Java代码分析神器:一键掌握复杂调用链的终极指南
Java代码分析神器:一键掌握复杂调用链的终极指南 【免费下载链接】java-all-call-graph java-all-call-graph - 一个工具,用于生成 Java 代码中方法之间的调用链,适合进行代码分析、审计或确定代码修改影响范围的开发者。 项目地址: https:…
航拍无人机灾后洪水房屋检测数据集 如何构建基于深度学习灾后无人机YOLOV8房屋检测系统 自然灾害
无人机图像航拍灾后洪水房屋检测数据集训练集6462张,验证集318张,测试集325张~ train: …/train/images val: …/valid/images test: …/test/images nc: 3 names: [‘Flooded’, ‘Not-Flooded’, ‘Partially-Flooded’]无人机航拍灾后洪水…