在Itext中修改现有PDF的字体

时间:2016-05-20 19:56:13

标签: java itext pdfbox

我可以修改现有PDF的字体吗?我有一些类型3(自定义)字体,没有任何字体描述符。我想将它们替换为一些有意义的Font。如何使用Itext或PDFBox执行此操作?

1 个答案:

答案 0 :(得分:3)

Type3字体也称为用户定义字体abc,...等字符会映射到由人定义的字形。例如,a与Apple徽标对应,b对应于形状为香蕉的字形,c看起来像椰子。

  • 苹果,香蕉,椰子等的形状使用PDF语法存储在PDF中。 PDF阅读器(如Adobe Reader)可以绘制苹果,香蕉,椰子......,通过执行字体程序,在这种情况下包含PDF路径构建和路径 - 绘制运算符和操作数。
  • PDF查看器没有智能识别这些形状是苹果,香蕉,椰子的代表...... ... PDF查看器只知道用户映射了这些abc等字符的字形......另请参阅我对问题的回答Why can't I extract text added using a Type3 font correctly?

有时,人们会匹配字符和字形,就像我为iText徽标创建Type3字体时所做的那样:阅读Creating the iText logo witha Type3 font。但是你不应该指望它。任何字符都可以映射到任何字形。

既然你知道这一点,你应该明白,你正在努力实现一些不可能实现的目标。假设你有一个带有Type3字体的PDF,其中a字符对应苹果,b字符带有香蕉,c字符带有椰子,它赢了'可以使用自定义编码自动将这种用户定义的字体替换为另一个" normal"字体不知道如何绘制苹果,香蕉和椰子,并使用完全不同的编码。