Веб-сервер Java и файлы PDF - PullRequest
       11

Веб-сервер Java и файлы PDF

0 голосов
/ 19 ноября 2009

Я создал свой собственный HTTP-сервер. Мне нужно вернуть файл PDF (созданный Jasper Reports) в веб-браузер. Однако, когда я читаю файл PDF и записываю его содержимое в сокет, веб-браузер получает пустой файл PDF. Когда я сохраняю этот файл и сравниваю его с оригиналом, я вижу, что многие символы были преобразованы из исходного значения в 0x3F (что означает «?»).

Когда я читаю файл, мои выходные данные отладки показывают, что правильные значения читаются и что правильные значения записываются в сокет. Кто-нибудь может мне помочь?

Вот код (за вычетом всего кода отладки), который читает файл PDF:

File f = new File(strFilename);
long len = f.length();
byteBuffPdfData = ByteBuffer.allocate( (int)len );

FileInputStream in = new FileInputStream(strFilename);

boolean isEOF = false;
while (!isEOF)
{
    int iValue = in.read();
    if (iValue == -1)
    {
 isEOF = true;
    }
    else
    {
        byteBuffPdfData.put( (byte)iValue );
    }   
}

Далее идет код, который пишет из байтового буфера в сокет ...

printWriter = new PrintWriter( socket.getOutputStream(), true );
printWriter.write(strHttpHeaders);
// Headers:     
// HTTP/1.0 200 OK
// Date: Wed, 18 Nov 2009 21:04:36
// Expires: Wed, 18 Nov 2009 21:09:36
// Cache-Control: public
// Content-Type: application/pdf
// Content-Length: 1811
// Connection: keep-alive
//

byteBuffPdfData.rewind();
while(byteBuffPdfData.hasRemaining())
{
    printWriter.print( (char)byteBuffPdfData.get() );
}
printWriter.flush();
socket.close();

Любая помощь, которая может быть предложена, очень ценится. Я уверен, что мне нужно что-то делать с наборами символов, но на данный момент я перепробовал миллион вещей, и, похоже, ничего не работает.

John

1 Ответ

0 голосов
/ 26 ноября 2009

Я не уверен, на каком языке вы пишете здесь (хотя выглядит как Java), но возможно ли, что что-то пытается преобразовать кодировку (возможно, в символы Unicode или из них)? ? кажется разумным в качестве «замены» для символов, которые не могут быть представлены в ASCII. (Я понимаю, что вы специально не пытаетесь выполнить какое-либо подобное преобразование, но, возможно, что-то подобное происходит в используемых вами библиотеках.)

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