文本提取为空且未知文本具有使用PDFBox,iText的type3字体(难题!)

时间:2014-02-09 13:15:48

标签: java itext pdfbox

我有阿拉伯语的PDF文件,当我使用PDFBox提取文本时,文本字体为Type3,有些字符为空,字体等于null?我想知道这是什么问题?

  protected void processTextPosition(TextPosition text) {
    String character=text.getCharacter(); // is empty
    String font=text.getFont().getBaseFont(); // equal null
}
使用iText生成

流: ( dJ� v{d W�cG�)Tj

我说的是这些问号,为什么我会以这种格式获得字符?

这些问号在我的信息流中出现为“SOH-STX-ETX-EOT”,而不是一个字符。 PDF中的字符显示为'd''J'

1 个答案:

答案 0 :(得分:2)

Type 3字体是用户定义的字体。例如:用户可以定义字符“P”对应于“以前称为王子的艺术家”(TAFKAP)的符号,这是一个字形,但不是来自任何已知字母的字母。

Type 3字体中的字形是一系列线条和形状,并且iText或PDFBox等程序无法确定哪个字符的含义。你得到一个问号是很正常的。例如:您将使用哪个字符this符号?

以下原因之一适用于包含Type 3字体的PDF:

  1. 该字体用于引入任何字体不存在的符号。
  2. 该字体用于混淆PDF的内容,因此无法提取其内容。
  3. PDF不是以优雅的方式创建的。
  4. 如果Type 3字体用于普通字符,则需要使用OCR将内容转换为普通文本。