You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PrinceXML转换HTML为PDF时遇字体缺失错误求助

解决PrinceXML转换PDF时的字体缺失问题

针对你遇到的字体警告与无法生成PDF的问题,按以下步骤解决:

  • 检查并安装系统基础字体
    确保系统中安装了可用的serif字体:

    • Windows:确认存在Times New Roman、Georgia等字体;
    • macOS:确认存在Times New Roman、Garamond等字体;
    • Linux:通过包管理器安装开源serif字体,比如Debian/Ubuntu执行 sudo apt install fonts-dejavu-core,RHEL/CentOS执行 sudo dnf install dejavu-serif-fonts。
  • 替换CSS中的通用字体别名
    不要依赖serif这个通用别名,直接指定具体字体列表,让Prince有明确的查找顺序:

    font-family: "Times New Roman", Georgia, "DejaVu Serif", serif !important;
    
  • 处理U+000B垂直制表符
    这个字符属于罕见控制字符,可通过两种方式解决:

    1. 直接清理HTML:用文本编辑器的查找替换功能,搜索\u000B(或对应编辑器的垂直制表符表示)并删除;
    2. CSS处理:通过样式隐藏或替换该字符:
      /* 将垂直制表符替换为空格 */
      * {
        white-space: pre-wrap;
        content: replace(content(), "\000B", " ");
      }
      
  • 嵌入自定义字体(可选)
    如果系统字体不可靠,可通过@font-face将字体文件嵌入项目,确保Prince能加载:

    @font-face {
      font-family: "CustomSerif";
      src: url("./fonts/your-serif-font.ttf") format("truetype");
      font-weight: normal;
      font-style: normal;
    }
    body {
      font-family: "CustomSerif", serif !important;
    }
    
  • 验证Prince可识别的字体
    运行以下命令查看Prince能检测到的字体列表,从中挑选可用的serif字体写入CSS:

    prince --list-fonts
    

内容的提问来源于stack exchange,提问作者Salim Ibrohimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:15:52