Domanda

Ho questo codice Java:

try {
    PDFTextStripper pdfs = new PDFTextStripper();

    String textOfPDF = pdfs.getText(PDDocument.load("doc"));

    doc.add(new Field(campo.getDestino(),
            textOfPDF,
            Field.Store.NO,
            Field.Index.ANALYZED));

} catch (Exception exep) {
    System.out.println(exep);
    System.out.println("PDF fail");
}
.

e getta questo:

11:45:07,017 WARN  [COSDocument] Warning: You did not close a PDF Document
.

E non so perché ma lanciare questo 1, 2, 3 o più.

Trovo che il cosdocument è una classe e ha un metodo vicino (), ma non uso questa classe da nessuna parte.

Ho queste importazioni:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;
.

Grazie :)

È stato utile?

Soluzione

Stai caricando un PDDocument ma non chiudendolo.Sospetto che devi fare:

String textOfPdf;
PDDocument doc = PDDocument.load("doc");
try {
    textOfPdf = pdfs.getText(doc);
} finally {
    doc.close();
}
.

Altri suggerimenti

Ho appena avuto anche questo problema.Con Java 7 puoi farlo:

try(PDDocument document = PDDocument.load(input)) {
  // do something  
} catch (IOException e) {
  e.printStackTrace();
}
.

Poiché PDDocument implements Closeable, il blocco try chiamerà automaticamente il suo metodo close() alla fine.

Questo avviso è emesso quando il documento PDF è finalizzato e non è stato chiuso.

Ecco il metodo finalize da cosdocument :

/**
 * Warn the user in the finalizer if he didn't close the PDF document. The method also
 * closes the document just in case, to avoid abandoned temporary files. It's still a good
 * idea for the user to close the PDF document at the earliest possible to conserve resources.
 * @throws IOException if an error occurs while closing the temporary files
 */
protected void finalize() throws IOException
{
    if (!closed) {
        if (warnMissingClose) {
            log.warn( "Warning: You did not close a PDF Document" );
        }
        close();
    }
}
.

Per sbarazzarsi di questo avviso, è necessario chiamare esplicitamente close sul documento quando hai finito con esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top