2010-12-15 3 views
5

を読む:C++、私はPDFファイルの内容を読み取るために、次のコードを使用しています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ファイル、1の部分だけ、)私は、このファイルを使用してコードtestetました:あなたの助けを

PDF Head.pdf

ありがとう!

+0

@ user461872:PDFを解析することの1つであり、PDFを読むことは別のものです。後者は、私の意見では役に立たない。だから、読んだだけで何をしたいのですか? – Nawaz

+0

文書内のPDFオブジェクトのリストを取得したいとします。その後、私の仕様に合ったいくつかのオブジェクトを読んでください。しかし、私はこれを行う方法を知っている、私はちょうどプログラムがファイルから間違った文字を読み取ると思った。したがって、ファイルを解析することは不可能です。 –

答えて

4

ファイルの読み方にエラーはありません。出力はファイルにリダイレクトするときにLinuxのボックスで実際に動作します。おそらく問題は、コンソールで混乱する制御文字です。ファイルに出力し、入力と比較してみてください。

+0

あなたは正しいです!ファイルのいくつかの記号がコンソールの出力を操作しました。読んだテキストは正しいですが、間違って表示されました。 –

0

バイナリファイルです。テキストエディタで開くのは意味がありません。

XVI32のような)ではなくバイナリエディタを使用して...と、このように印刷を行います。

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

または、HexEditorプラグインをNotepad ++で使用してください。 HxDは2位になります。 –

-1

は、バイナリエディタを使用してみてください。メモ帳などのプログラムでは通常のコードを読み取ることができないため、16進エディタで表示する必要があります。私は個人的にghexをお勧めします。

関連する問題