news 2026/2/28 10:16:58

Chrome PDF生成中文字体支持一键配置脚本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Chrome PDF生成中文字体支持一键配置脚本
#!/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"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 3:12:37

# 前端代码的艺术:高效编程与用户体验的完美结合

# 前端代码的艺术&#xff1a;高效编程与用户体验的完美结合在当今数字化时代&#xff0c;前端开发已不仅仅是实现页面功能的技术工作&#xff0c;更是一门融合设计思维、用户体验和工程效率的综合艺术。优秀的前端代码不仅能实现产品需求&#xff0c;更能提升用户满意度&#…

作者头像 李华
网站建设 2026/2/25 10:13:46

Kotaemon中的超时控制与请求重试机制详解

Kotaemon中的超时控制与请求重试机制详解 在构建企业级智能对话系统时&#xff0c;一个常被低估却至关重要的挑战是&#xff1a;如何让AI代理在不完美的网络环境中依然“表现得像正常工作”&#xff1f; 设想这样一个场景&#xff1a;用户向智能客服提问财报数据&#xff0c;系…

作者头像 李华
网站建设 2026/2/26 7:09:41

内存取证工具终极指南:PCILeech、WinPMEM、DumpIt深度解析

内存取证工具终极指南&#xff1a;PCILeech、WinPMEM、DumpIt深度解析 【免费下载链接】pcileech Direct Memory Access (DMA) Attack Software 项目地址: https://gitcode.com/gh_mirrors/pc/pcileech 引言&#xff1a;数字取证的关键战场 在当今复杂的网络安全环境中…

作者头像 李华
网站建设 2026/2/26 20:54:41

掌握KiTTY:Windows远程连接新体验,轻松管理服务器

掌握KiTTY&#xff1a;Windows远程连接新体验&#xff0c;轻松管理服务器 【免费下载链接】KiTTY :computer: KiTTY, a free telnet/ssh client for Windows 项目地址: https://gitcode.com/gh_mirrors/kit/KiTTY KiTTY作为一款专为Windows系统打造的免费SSH和Telnet客户…

作者头像 李华
网站建设 2026/2/26 20:12:45

如何为Kotaemon添加新的Embedding模型支持?

如何为Kotaemon添加新的Embedding模型支持&#xff1f; 在构建现代智能对话系统时&#xff0c;一个常被低估但至关重要的环节是——如何让机器真正“理解”用户的问题&#xff1f; 这并不是靠大语言模型&#xff08;LLM&#xff09;单打独斗就能解决的。尤其是在企业级检索增强…

作者头像 李华
网站建设 2026/2/28 1:58:48

Draw.io电子工程绘图库:解锁专业电路设计的全新境界

还在为繁琐的电路图绘制而困扰吗&#xff1f;想要找到一种既能保证专业性又简单易用的电子设计工具吗&#xff1f;今天&#xff0c;让我们一起探索Draw.io电子工程绘图库这个强大的开源解决方案&#xff0c;它将彻底改变你对电路设计的认知和使用感受。 【免费下载链接】Draw-i…

作者头像 李华