2010-12-15 4 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 파일을 구문 분석하고 싶지만 원본 문자가 없으면이 파일을 사용할 수 없습니다. 나는이 파일의 코드 testet했습니다 (이 아니 PDF 파일, 하나의 단지 일부, 그래서 당신은 그것을 표시 할 수 없습니다) : 당신의 도움에 대한

PDF Head.pdf

감사합니다!

+0

@ user461872 : PDF를 파싱하는 것이 한 가지이며, PDF를 읽는 것이 다른 것입니다. 후자는 내 의견으로는 쓸모가 없다. 그러니 독서로 무엇을하고 싶니? – Nawaz

+0

문서의 PDF 개체 목록을 가져오고 싶습니다. 그런 다음 내 사양에 맞는 객체를 읽습니다. 그러나 나는 이것을하는 법을 압니다. 나는 그 프로그램이 파일에서 잘못된 문자를 읽는다고 생각했습니다. 따라서 파일을 파싱하는 것은 불가능합니다. –

답변

4

파일을 읽는 방식에 어떤 오류도 보이지 않습니다. 출력은 파일로 리디렉션 할 때 실제로 제 리눅스에서 작동합니다. 아마도 문제는 콘솔에 엉망인 제어 문자에 있습니다. 파일로 출력하고 입력과 비교하십시오.

+0

당신이 옳았어요! 파일의 일부 기호가 콘솔의 출력을 조작했습니다. 읽은 텍스트는 정확하지만 잘못 표시되었습니다. –

0

이진 파일이므로 텍스트 편집기에서 열지 마십시오.

(XVI32 같은) 대신 16 진수 편집기를 사용하여 ...와 같이 인쇄를 수행

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

또는 HexEditor 플러그인을 Notepad ++와 함께 사용하십시오. HxD는 2 위를 차지합니다. –

-1

는 16 진수 편집기를 사용해보십시오. 때로 메모장과 같은 프로그램은 일반 코드를 읽을 수 없으므로 16 진수 편집기를 사용하여 코드를 읽어야합니다. 나는 개인적으로 ghex를 추천한다.