2011-01-27 2 views
1

Я хочу прочитать pdf-файл с URL-адреса и преобразовать его в миниатюру. Я использую следующий код. Я не включил конвертирующую часть здесь. Проблема заключается в строке «pdffile = new PDFFile (buf)»; Я получаю исключение «java.io.IOException: это не может быть файл PDF». Но я вижу pdf в браузере. Что со мной не так? Пожалуйста, помогите мне."java.io.IOException: Это может быть не файл PDF"

byte[] byteArray = null; 
    InputStream is = null; 
    String streamTo = null; 
    BufferedImage bmg = null; 
    PDFFile pdffile; 
    ByteBuffer buf; 
    int pageNumber = 1; 

    try { 
     is = fetchImageFromServer(url); //Pdf Url path 
     if (!pageNumber.isEmpty()) { 
     streamTo = is.toString(); 
     byteArray = streamTo.getBytes(); 
     buf = ByteBuffer.wrap(byteArray); 
     pdffile = new PDFFile(buf); 
     } 
    } catch (IOExceptio e) { 
    } 
+0

Вы должны указать, какую библиотеку вы используете для этого - 'PDFFile' не является стандартным классом Java. –

+0

Я переполнен переполнением стека. Я не знал гораздо больше. Если какие-либо недостатки с моей стороны или какие-либо советы мне оказывают любезную помощь. – 1355

+0

Попробуйте эту статью - [Как прочитать файл PDF с URL-адреса в Java] (http://www.gnostice.com/nl_article.asp?id=207&t=How_To_Read_A_PDF_File_From_A_URL_In_Java). Я написал это для пакета Java Java для моей компании, но он делает то, что вы пытаетесь сделать. – BZ1

ответ

3

Вы должны прочитать содержимое потока. toString этого не сделает.

+0

Спасибо за быстрый ответ. Pls объясняет немного больше – 1355

+0

+1 @Sarika: Просто прочитайте учебник по Java о потоках ... это стандартное знание, которое Морису не нужно воспроизводить здесь. – Daniel

+0

@ Daniel: -1 не отмечен мной. Вчера я покинул офис. – 1355

0

PDf - это двоичный объект. Если вы преобразуете его в строку, он изменит значения байтов и сломает файл.

+3

-1, это полная ерунда. – Daniel

+0

Формат файла PDF является блобом. Если вы преобразуете его в String, это похоже на просмотр PNG или другого двоичного изображения в String и обратно. Процесс преобразования изменит некоторые байты, которые сломают blob. –

+0

@ mark stephens: Спасибо. -1 не отмечен мной. Вчера я покинул офис. – 1355

2

Звонок is.toString() не будет считать все байты правильно. Существует функция утилиты на Apache Commons IO, которая поможет вам, IOUtils.toByteArray(). Попробуйте следующее:

is = fetchImageFromServer(url); //Pdf Url path 
if (!pageNumber.isEmpty()) { 
    byteArray = IOUtils.toByteArray(is); 
    buf = ByteBuffer.wrap(byteArray); 
    pdffile = new PDFFile(buf); 
} 
Смежные вопросы