C ++阅读PDF文件

时间:2010-12-15 10:22:03

标签: c++ parsing pdf binary

我正在使用以下代码来阅读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 个答案:

答案 0 :(得分:4)

我没有看到您读取文件的方式有任何错误(当我将输出重定向到文件时,代码实际上在我的Linux机器上工作)。可能问题在于控制角色搞砸了控制台。尝试输出到文件并与输入进行比较。

答案 1 :(得分:0)

这是一个二进制文件,在文本编辑器中打开它是没有意义的。请改用十六进制编辑器(如XVI32

...并按照以下方式进行打印:

fprintf("%#x ", buffer[i]);

答案 2 :(得分:-1)

尝试使用十六进制编辑器。有时像记事本这样的程序无法读取普通代码,因此您必须使用十六进制编辑器进行查看。我个人推荐ghex。