当前位置: 首页 > news >正文

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"
http://www.cnnetsun.cn/news/126009.html

相关文章:

  • 企业微信会话存档Go SDK架构深度解析:高性能消息处理实践指南
  • MetroFramework终极指南:快速将传统WinForms应用升级为现代UI
  • 5分钟搞定!智能代码提取神器让软件著作权申请不再头疼
  • JVM 调优工具深度指南:从监控到诊断的全流程实战
  • ScratchJr-Desktop终极安装配置指南:从零开始快速搭建免费儿童编程环境
  • 杜比大喇叭β版:5个步骤解锁网易云音乐专业音效体验
  • 5分钟快速上手:Vue-Flow-Editor可视化流程编辑器完整指南
  • Aria2终极配置指南:从零搭建高性能下载系统
  • Unity WebGL中RTSP视频流播放的终极解决方案:完整实现指南
  • 期末复习01 实验题
  • 任务一- 2.子任务二:Hadoop完全分布式安装配置
  • 告别图片重复烦恼:AntiDupl.NET智能去重全攻略
  • Kotaemon支持Markdown格式输出吗?内容呈现优化
  • 5步教你用开源眼动追踪工具实现视线控制电脑
  • IndexTTS2语音合成终极指南:10分钟快速上手工业级零样本TTS系统
  • 26、WPF样式、主题与换肤功能全解析
  • 如何监控Kotaemon系统的运行状态与性能指标?
  • 基于Kotaemon的招投标文件智能比对系统
  • 3大架构革新:ESP32 HWCDC数据传输效率提升500%
  • 如何彻底解决WVP-GB28181-Pro视频点播超时:3步快速优化指南
  • 颠覆传统!Windows平台APK安装终极方案全解析
  • 人教人学不会,事教人一次就好(用经历进行职业反思)
  • Obsidian数据迁移全攻略:5步轻松导入Evernote、Notion等笔记
  • 【驱动量化交易12】教你如何通过股票数据api接口获取股票近年分红数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • 8、调试模式与控制输出:探索Expect脚本的高级技巧
  • 13、《深入探究 send 命令:功能、应用与对比》
  • Kotaemon框架入门指南:轻松上手检索增强生成技术
  • EdgeRemover专业指南:彻底移除微软浏览器的技术方案解析
  • 安卓实体手机分辨率适配失败?BlueArchiveAutoScript兼容性深度解决方案
  • Avogadro分子编辑器终极指南:从入门到精通的完整攻略