news 2026/2/25 9:25:26

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/18 19:58:12

解锁RFID魔法:用Python轻松玩转MFRC522读卡器

解锁RFID魔法&#xff1a;用Python轻松玩转MFRC522读卡器 【免费下载链接】MFRC522-python A small class to interface with the NFC reader Module MFRC522 项目地址: https://gitcode.com/gh_mirrors/mfr/MFRC522-python 还在为复杂的RFID开发而头疼吗&#xff1f;MF…

作者头像 李华
网站建设 2026/2/24 17:13:01

3分钟掌握:免费开源Vue审批流程设计系统终极指南

3分钟掌握&#xff1a;免费开源Vue审批流程设计系统终极指南 【免费下载链接】Workflow 仿钉钉审批流程设置 项目地址: https://gitcode.com/gh_mirrors/work/Workflow 还在为传统审批流程的低效和混乱而烦恼吗&#xff1f;&#x1f914; 企业日常运营中的请假、报销、采…

作者头像 李华
网站建设 2026/2/20 20:10:03

Claude Code 创始人 Boris Cherny 深度访谈:从 Meta 到 Anthropic

引言/导读 Boris Cherny,这位Anthropic的Claude Code创始人,不仅是AI工程领域的先驱,其职业生涯更是一部关于产品直觉、组织文化和技术杠杆的深度实践教科书。从在Meta(前Facebook)主导核心产品的开发和大规模重构,到如今在Anthropic引领AI时代的工程效率革命,Boris的经…

作者头像 李华
网站建设 2026/2/23 21:38:25

22、量子信息中的旧与新:信息、非物质主义与工具主义

量子信息中的旧与新:信息、非物质主义与工具主义 在当今这个信息时代,量子信息理论应运而生,它试图驯服量子世界的神秘之处,并将其应用于计算和通信领域。然而,这一新兴领域却与一些古老的哲学主题——非物质主义和工具主义相互交织。本文将深入探讨这些主题在量子信息理…

作者头像 李华
网站建设 2026/2/17 2:39:21

Kotaemon中的负载均衡策略如何分配请求?

Kotaemon中的负载均衡策略如何分配请求&#xff1f; 在企业级智能对话系统日益复杂的今天&#xff0c;一个用户的问题可能触发数十次知识检索、模型推理与工具调用。当成千上万的用户同时发起这类复合请求时&#xff0c;系统的稳定性立刻面临严峻考验——某个节点突然过载、响应…

作者头像 李华
网站建设 2026/2/18 2:58:35

平板导热仪厂家推荐排行榜:2025最新口碑深度解析

平板导热仪厂家推荐排行榜&#xff1a;2025最新口碑深度解析在工业生产和科研实验中&#xff0c;企业选择平板导热仪时&#xff0c;常常会遇到诸如“测量精度低、数据不稳定”“设备操作复杂、培训成本高”“售后服务差、故障响应不及时”等问题。基于对1000 工业企业和科研机…

作者头像 李华