java pdfbox encoding_Java PDFBox - 读取和修改带有特殊字符的pdf(变音符号)

您不能只替换字符串中的文本 . 我不轻易说 . 我曾经多年前在Acrobat上工作,并在初始版本中使用了文本搜索工具,因此我对文本编码问题有了相当深刻的理解 . 主要问题是PDF中的每个字符串都以某种方式编码 . 这是因为PDF是在Unicode通常可用之前制作的,并且在PostScript中具有历史记录 . PosctScript喜欢为字体提供非常灵活的编码方法,并鼓励重新编码 .

让我们退后一步,了解整体情况 .

PDF格式的字符串中的字符默认情况下用文本运算符显示,编码为一系列8位字符 . 要确定为每个字节绘制的字形,将通过该字体的编码向量推送该字节 . 编码向量将字节映射到字形名称,然后在字体中查找并在页面上绘制 . 请注意,此描述是半真半假的(稍后) .

大多数生成PDF的应用程序都很友好,只使用标准编码,例如 StandardEncoding 或 WinAnsiEncoding ,其中大多数都非常合理 . 其他人将使用标准编码和 encoding delta ,它们是从标准编码到编码的差异 .

有些应用程序试图在它们生成的PDF中更加节俭,因此它们会查看它们使用的字形并决定嵌入字体的子集 . 如果他们只使用大写和小写罗马字母和数字,他们重建没有这些元素的字体,并可能选择重新索引它们并提供一个编码矢量,使字节0x00转到字形'a',0x01转到字形'b'等 .

现在回到半真半假 . 有一类字符由字符ID(或CID)编码,TrueType和OpenType字体属于该类别 . 在这种情况下,您可以访问Unicode,但是还有一个编码步骤,您可以将字符串(现在为UTF16BE)映射到CID,该CID用于从字体中获取字形 . 并且由于没有特别好的理由ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值