"java.io.IOException: это не может быть файл PDF" - PullRequest
1 голос
/ 27 января 2011

Я хочу прочитать PDF-файл с URL-адреса и преобразовать его в миниатюру изображения.Я использую следующий код.Я не включил сюда часть преобразования. Проблема в строке "pdffile = new PDFFile (buf);"Я получаю исключение "java.io.IOException: это может быть не файл PDF".Но я могу увидеть 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) {
    }

Ответы [ 3 ]

3 голосов
/ 27 января 2011

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

2 голосов
/ 27 января 2011

Вызов 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);
}
0 голосов
/ 27 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...