为什么PDFParser会生成特殊字符而不是空格?

时间:2013-10-11 13:51:16

标签: java pdf apache-tika pdftotext

以下代码为一个PDF而不是另一个PDF生成特殊字符而不是空格:

    String fullText;
    BodyContentHandler handler = null;
    try {

        // size is limit is 100M

        handler = new BodyContentHandler(100 * 1024 * 1024);
        Metadata meta = new Metadata();


        PDFParser parser = new PDFParser();
        parser.setEnableAutoSpace(false);
        parser.parse(new FileInputStream(this.pdf /*always a valid pdf file*/), handler, meta, new ParseContext());

    }

    catch (SAXException e) {
        throw new IOException(e);
    } catch (TikaException e) {
        throw new IOException(e);
    }

    fullText = handler.toString();

根据PDF的不同,fullText的子字符串将如下所示:

  

将*继续*到*是* *使用在*的支持* *的

当它看起来像这样:

  

将继续用于支持

在其他地方,'%'代替' - '和'!'在粗体文本中替换空格。

仅在处理一个PDF而不处理另一个PDF时才会出现此问题。根据pdfinfo,两个PDF都是由Quartz PDFContext生成的。

linux命令pdftotext呈现相同的结果。

这是原始PDF生成方式的问题吗?为什么会这样?

0 个答案:

没有答案