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

PDF流异常编码解析求助:LibreOffice生成文件的非预期编码疑问

问题原因解析

1. 字体子集化与自定义编码

LibreOffice导出PDF时,会对嵌入的字体做子集化处理:只嵌入文档中实际用到的字形,同时为这些字形分配自定义的短编码(比如<01>对应'H',<02>对应'e'),而非直接使用ASCII/Unicode值。这样做是为了尽可能缩小PDF文件体积,这也是你看到<01>这类奇怪编码的核心原因——它们不是字符的原始编码,而是字体子集里的字形映射代码。

2. TJ操作符的用途

你看到的[<01>5<02>-6<03>2<03>2<040506>-2 <040703>2<08>]TJ是PDF的文本数组操作符,和(Hello world) Tj的区别在于:

  • Tj用于直接显示单个完整字符串,不做精细间距调整
  • TJ支持在字符串片段之间插入间距调整值(比如5、-6这些整数,单位是千分之一的文本空间宽度),LibreOffice用它来优化字符间的排版间距,让文本显示更美观。

3. 如何映射编码到实际字符

要确认这些编码对应的字符,你需要在解压后的PDF中找到该文本使用的字体字典:

  • 先从内容流里找到字体引用,比如类似/F1 12 Tf的行(F1是字体名称)
  • 搜索/F1对应的字体字典,查看其中的Encoding字段或ToUnicode表,里面会明确列出<01>、<02>这类编码对应的实际字符(比如<01> /H)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:45:02