Descargar un PDF con Java a partir de la URL

pepajul
20 de Mayo del 2005
Hola! Estoy intentando hacer un método en Java que recibe como entrada una URL y devuelve su contenido en texto plano, y estoy encontrando grandes dificultades cuando se trata de un documento PDF (content-type=application/pdf). He intentado varias formas. Primero hacía URL.openStream() y el contenido lo copiaba byte a byte a un FileOutputStream de nombre "foo.pdf". "foo.pdf" se parece a lo que quiero (al verlo con cat parece igual), pero está corrompido. El pdftotext no lo traga, ni el ggv me lo lee. Lo he comparado byte a byte con lo que realmente debería ser, y el parecido es de 6558 bytes diferentes contra 220274 iguales (o sea, muy parecido, pero demasiado diferente)... Después he intentado hacerlo con un ContentHandler específico para PDF (con su ContentHandlerFactory), usando la clase PDFStream del paquete itext. A partir del contenido PDFStream que recupero de la URL de esta manera, lo copio byte a byte en un FileOutputStream al fichero "foo.pdf", como antes. Y, como antes, "foo.pdf" se parece mucho a lo que quiero pero parece corrompido y no puedo usarlo con pdftotext. En fin, no sé qué tal me habré explicado... Alguna sugerencia, por favor?? Es bastante urgente...

pepajul
20 de Mayo del 2005
Después de dos días de intensa búsqueda de una solución, ha sido animarme a preguntarlo, y encontrarla solita al momento... suele pasar....

Pues bien, por si a alguien le resulta de ayuda, lo he resuelto con una llamada al comando wget... Si es que... no podía ser más fácil!! Pero es que no sabía que existía eso...

O sea, que el código es más o menos:

Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec("exec " + urlAsString);

Saludos!

pepajul
20 de Mayo del 2005
Uy! que me equivoqué en el código... donde pone

Process p = runtime.exec("exec " + urlAsString);

deberĂ­a poner

Process p = runtime.exec("wget " + urlAsString);

Sorry!