Red de conocimiento informático - Aprendizaje de programación - Java tiene problemas para leer documentos y PDF.

Java tiene problemas para leer documentos y PDF.

PDFBox es una biblioteca de código abierto para procesar archivos pdf. Es necesario agregar PDFBox-0.7.3.jar al classpath. Al mismo tiempo, también se debe agregar FontBox1.0.jar al classpath; de lo contrario, se informará un error

import?java.io.FileInputStream;?

import?java .io.FileNotFoundException;?

importar?java.io.IOException;?

¿importar?

importar?org.pdfbox.pdfparser.PDFParser;?

importar?org.pdfbox.util.PDFTextStripper;?

público *? Debe encargarse usted mismo del formato del texto de salida.

*?@param?pdfFilePath?file?path? *?Devuelve todo el texto en el archivo pdf*/?

cadena estática pública getTextFromPDF(String pdfFilePath)

{? >

Resultado de cadena =?

FileInputStream?

PDDocument?

Probar{?

es?=?new?FileInputStream (pdfFilePath);?

PDFParser?

parser.parse();?

document?=?parser.getPDDocument();?

PDFTextStripper?stripper?=?new?PDFTextStripper();?

resultado?=?stripper.getText(document);?

}?{?catch?(FileNotFoundException ?e)?

//?TODO?¿Autogenerado?catch?block?

e.printStackTrace();?

}?{

//?TODO?

}?finalmente?{?

si?{

¿Probar?

probar ?{?

es.close();?

}?{

Es.close();?

// ?TODO?¿Generado automáticamente?catch?block?

e.printStackTrace();?

}?

}?

if(document! =null)?{

If (document?! =?null)?

¿intentar?{?

document.close(); ?

}?{

Documento.close();?

//?TODO?¿Autogenerado?catch?bloque?

e.printStackTrace();?

}?

}?

}?

¿regresar?

}?

público?

{?

String?str=PdfReader.getTextFromPDF("C:\\Read.pdf");?

System.out.println(str);?

}?

}

Código 2: import?java.io.File ;?

importar?java.io.FileOutputStream;?

importar?java.io.OutputStreamWriter;?

importar?java.io.Writer;?

importar?java.net.MalformedURLException;?

importar?java.net.URL;?

importar?org.pdfbox.pdmodel.PDDocument;?

import?org.pdfbox.util.PDFTextStripper;?

public?class?PDFReader?{?

c?void?readFdf(String?file)?throws?Exception?{? boolean?sort?=?false;? String?textFile?=?null;? ?1;? int?endPage?=?Integer.MAX_VALUE;? ¿Escritor? PDDocument?{?

prueba?{? Documento URL, si se produce una excepción, cargue el documento desde el sistema de archivos local //

URL?url?=?new?URL(pdfFile);?

/Tenga en cuenta que en la versión anterior, el parámetro ya no es una URL

document?=?PDDocument.load(pdfFile);?

/?Obtenga el nombre del archivo PDF. ?

String?fileName?=?url.getFile();?

//?¿Nombre el archivo txt recién generado después del archivo PDF original

? if(fileName.length()?{ File?outputFile?=?new?File(fileName.substring(0,?fileName?

.length()?

.length( )?-?4)?

+?" .txt");? textFile?=?outputFile.getName();?

}?

}?{

>/?

/?

// Tenga en cuenta que los parámetros ya no son las URL de versiones anteriores.

document?=?PDDocument.load(pdfFile);?

if(pdfFile.length()?>?4)?{ textFile?=?pdfFile.substring(0, ?pdfFile.length()?-?4)?

+?" .txt";?

}?

}?

salida?=?new?OutputStreamWriter(new?FileOutputStream(textFile),? codificación);?

PDFTextStripper?

stripper?=?new?PDFTextStripper();?

//?¿Establecer si desea ordenar?

stripper.setSortByPosition(sort);?

//?¿Establecer la página de inicio?

stripper.setStartPage(startPage);?

//? setStartPage(startPage);?

stripper.setEndPage(endPage);?

//?¿Llamar a writeText de PDFTextStripper para extraer y generar texto?

stripper.writeText(document,?output);? }?{

//?¿Cerrar el flujo de salida?

salida.close();?

}?

if(document! =?null)?{

//? Cerrar documento PDF

document.close();?

}? }? p>

//?¿Obtener el contenido de SpringGuide.pdf en la unidad E?

pdfReader.readFdf("C:\\Read.pdf");? }?{

e.printStackTrace(); }? >}

2. Admite la extracción de archivos pdf chinos: xpdf

xpdf es un proyecto de código abierto y podemos llamar a su método local para extraer archivos pdf chinos.

.com/technology/tech_downs/1880_004.zip

Paquete de parches:

.com/technology/tech_downs/1880_005.zip

Coloque el parche chino de acuerdo con el archivo Léame y luego podrá comenzar a escribir programas Java que llamen a métodos locales.

Aquí hay un ejemplo de cómo llamar: import?java.io.*;?

/**?

*

Título: ?pdf?Extracto

?

*?

Descripción:?correo electrónico:chris@matrix.org.cn

?

*?

Copyright:?Matrix?Copyright?(c)?2003

?

*?

Empresa: Matrix.org.cn

p>?

*?@autor?chris?

*?@versión?1.0,¿quién?usa?este?ejemplo?por favor?permanezca?la?declaración?

*/?

¿Público?clase?PdfWin?{?

¿Público?PdfWin()?

¿Público?clase?PdfWin?{ ?

}?

¿público?static?void?main(String?args[])?throws?Exception?

{?

Cadena?PATH_TO_XPDF="C:Program?Filesxpdfpdftotext.exe";?

Cadena?

Cadena[]?{?PATH_TO_XPDF,?" -enc",?" UTF - 8",?" -q",?nombre de archivo,?" -"};?

Proceso?p?=?Runtime.getRuntime().exec(cmd);?

BufferedInputStream?bis?=?new?BufferedInputStream(p.getInputStream());?

InputStreamReader?

StringWriter?

char[]?buf ? =?new?char[10000];?

int?

mientras((len?=?reader.read(buf))>=?0)?{

//out.write(buf,?0,?len);?

System.out.println("la longitud es "+len);?

}?

reader.close();?

Cadena?

System.out.println("la? str? es "+ts);

}?

}

}?