노무현 전 대통령 서거 추모글 남기기

'개발자가 뭐길래/웹보안'에 해당되는 글 1

  1. 2008.06.26 PDF에서 텍스트 뽑아내는 오픈 소스
C를 이용해서 PDF를 텍스트로 변경하고 싶었습니다.

근데 아는게 없어서 맨땅에 헤딩 시작했고..

별다른 인코딩이 안되어 있으면 그냥 읽어낼 수도 있지만, 인코딩 된 문서가 대부분이므로 텍스트로 보고 싶다면 디코딩을 해야 하는데, 찾다 보니 pdf generate 오픈 소스는 종종 보이나 디코딩하는건 거의 100번 트라이 버전이거나 = =) ...

흠. 암튼 codeproject에서 원하는 오픈소스를 찾았습니다.

제목도 정확하게

"Code to extract plain text from a PDF file"

기~쁘다 구~주 오셨네~ 꺄항!!


링크 따라가보면 자세한 설명이 나와 있습니다. 대략 사용시 주의할 점이라면..

Basics


...Text streams are usually compressed using the FlateDecode filter and may be uncompressed using code from the ZLIB (http://www.zlib.org/) library...


- 텍스트 스트림은 보통 FlateDecode 필터로 압축되며 may be ZLIB 라이브러리에서 제공하는 코드로 압축해제 된다. (따라서 zlib 라이브러리를 받아 사용해야 한다.)

About Code


This single source code file contains very simple, very basic C code. It initially reads in the entire PDF file into one buffer and then repeatedly scans for "stream" and "endstream" sections. It does not check which filter should be applied and always assumes FlateDecode. (If it gets it wrong, usually no output is generated for that section of the file, so it is not a big issue).(중략)

This code is supplied as is, no warranties. Use at your own risk.


- 이 소스는 C 코드로 된 무척 기본적이고 간단한 코드다. 처음에 PDF 파일을 통째로 하나의 버퍼에 읽어들이고서 "stream"과 "endstream" 이 있는 곳마다 그 사이의 내용을 scan 한다. (텍스트 내용이 stream과 endstream 이라는 태그(?)사이에 위치하기 때문) 이 코드에서는 어떤 필터를 지원할지 체크하지 않고 그냥 FlateDecode를 이용했다고 가정한다(이와 다른 경우 그 섹션에 대한 결과물은 나오지 않지만 큰 이슈사항은 아니다).

- 이 코드는 no warranty로 제공되고.. 사용시 risk는 니 책임이다.


암튼 소스 코드와 테스트용 프로그램이 제공되는데 윈도에 설치하는 프로그램입니다.

테스트 해보니 텍스트가 뿅! 튀어나오는데 (와~)

사용자 삽입 이미지

pdf 원본

사용자 삽입 이미지

뽑아진 텍스트


근데 한글로 된 파일과 일부 파일은 안되더군요 = =

게시판에 보니 chinese 안되요~ 라는 글과 함께 chinese 되게 만들었다는 코드도 올라와 있었는데 참고가 될지도 몰라요.

일정이 변경되어서 제가 이걸로 계속 작업할지 어떨지 모르겠는데= = (무책임)

PDF에 대한 더 자세한 내용을 알고 싶다면 Adobe PDF 사이트에서 레퍼런스를 다운 받아 볼 수 있습니다. (1000페이지가 넘지만 그만큼 자세해요..)