1

次のコードは、ある 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 の部分文字列は次のようになります。

の*サポート*で*使用され続け*ます*

次のようになります。

をサポートするために引き続き使用されます。

他の場所では、'%' は '-' と '!' を置き換えます。太字のテキストの間でスペースを置き換えます。

この問題は、1 つの PDF を処理し、他の PDF を処理しない場合にのみ発生します。pdfinfo によると、両方の PDF は Quartz PDFContext によって生成されます。

Linux コマンド pdftotext は同じ結果をレンダリングします。

これは元の PDF の生成方法に問題がありますか? なぜこうなった?

4

0 に答える 0