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();?
}?{ p>
//?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)? p>
+?" .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 >
*/?
¿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)?{ p >
//out.write(buf,?0,?len);?
System.out.println("la longitud es "+len);?
}?
reader.close();?
Cadena?
System.out.println("la? str? es "+ts);
}?
}
}?