Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么PDFParser生成特殊字符而不是空格?_Java_Pdf_Apache Tika_Pdftotext - Fatal编程技术网

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

Java 为什么PDFParser生成特殊字符而不是空格?,java,pdf,apache-tika,pdftotext,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();

以下代码正在为一个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格式,全文的子字符串如下所示:

将*继续*用于*支持*的*中*

当它看起来像这样时:

将继续用于支持

在其他地方,“%”替换“-”和“!”在粗体文本中替换空格

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

linux命令pdftotext呈现相同的结果


这是如何生成原始PDF的问题吗?为什么会发生这种情况?

PDF文件中的字体对象可能不一致。请注意,在PDF中,glyth的视觉表示通常独立于它所表示的字符。如果您发布了一个不起作用的示例文件,同时告诉我们哪段文本不起作用,我们可能会提供更多信息。另外,请看一下这个问题:要进行更具体的分析,请提供一个示例pdf。