C ++ Чтение PDF-файла - PullRequest
       34

C ++ Чтение PDF-файла

5 голосов
/ 15 декабря 2010

Я использую следующий код для чтения содержимого файла PDF:

string document;
FILE * f;
f = fopen ( path , "rb");
unsigned char buffer[1024];
while(!feof(f)){   
    int bytes = fread(buffer,1,1024,f);
    for(int i = 0; i < bytes; i++){
        document += buffer[i];
        cout << buffer[i];
    }
}
fclose ( f );

Проблема в том, что символы не такие, как при открытии файла в текстовом редакторе. Например этот файл files.flashfan.ch/file.png

результатов в этом выводе: files.flashfan.ch/output.png

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

PDF Head.pdf

Спасибо за вашу помощь!

Ответы [ 3 ]

4 голосов
/ 15 декабря 2010

Я не вижу ошибок в том, как вы читаете файл (код фактически работает на моем компьютере с Linux, когда я перенаправляю вывод в файл) Вероятно, проблема заключается в управляющих символах, которые портятся в консоли. Попробуйте вывести в файл и сравнить с вводом.

0 голосов
/ 16 декабря 2010

Попробуйте использовать шестнадцатеричный редактор.Иногда такие программы, как блокнот, не могут читать нормальный код, поэтому вам придется просматривать его в шестнадцатеричном редакторе.Я лично рекомендую ghex.

0 голосов
/ 15 декабря 2010

Это двоичный файл, нет смысла открывать его в текстовом редакторе.Вместо этого используйте шестнадцатеричный редактор (например, XVI32 )

... и выполните печать следующим образом:

fprintf("%#x ", buffer[i]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...