IIS 웹 앱에 업로드 할 때 PDF 텍스트 변환?
문제
나는 여러 c# dll을 조사했으며 특히 잘 작동하는 것을 발견하지 못했습니다. 내 요구 사항은 다음과 같습니다.
- PDF 문서는 ASPX 페이지를 통해 업로드됩니다.
- 텍스트를 PDF와 함께 DB에 추출하고 저장해야합니다.
- 솔루션은 웹 앱을 복제하는 데 추가 비용이 가을 수 없습니다 (따라서 알다 작동하면 고정 된 금액 솔루션이 고려되지만 설치당 수수료는 없습니다).
- 좋은 전환이 가장 중요하지만 사용자는 업로드를 원할 수 있습니다. 많은 PDF는 한 번에 파일이므로 속도도 중요합니다.
텍스트를 소비 할 다운 스트림 프로세스는 사용하도록 설정됩니다. pdfbox, 잘 작동하는 것 같습니다. 하지만:
- pdfbox Java로 작성되었으므로 별도의 프로세스로 시작하고 결과를 검색해야합니다 (이를 사용하여 해고하고 있습니다. IKVM).
- 기본적으로 디스크 파일에서 읽지 만 단순성과 속도 모두에 대해 stdin-> stdout 필터. PDFBox를 수정하는 것은 간단했지만 C#에서 I/O를 하위 프로세스로 가져 오는 것은 지루했습니다.
- 나는 하드 드라이브에 새 디스크를 쓸 수 있고, PDFbox를 시작하고, 종료 될 때까지 기다린 다음 하드 드라이브 (또는 그)에서 읽을 수 있다는 것을 알고 있습니다. stdout), 그러나 그것은 해킹 된 것처럼 보이고 느리게 될 것입니다.
PDF 컨버터 레시피를 찾을 수 없다는 사실에 놀랐습니다. 일반적인 요구 사항처럼 보입니다. 누구나 다음 중 하나를 도와 줄 수 있습니다.
- 작동하는 통조림 변환 솔루션 적어도 만큼 잘 pdfbox.
- IIS 뒤에 stdio 필터를 사용하는 경우 진정으로 나쁜 생각입니다. 왜.
미리 감사드립니다.
해결책
나는 원래 이진 데이터를 Process.StandardInput (스트림 라이터) 문자 데이터 만 처리하므로 답은 사용하는 것입니다. Process.StandardInput.Basestream (개울).
또한 두 파이프가 채워질 수 있으므로 (64KB 버퍼 IIUC) 다음과 같은 패턴을 사용했습니다.
- 데이터를 작성하기 위해 스레드를 스폰 한 다음 깃발을 설정하고
- 모든 반환 데이터를 읽기 위해 스레드를 스폰 한 다음 플래그를 설정하고
- 두 플래그가 설정 될 때까지 루프를 설정하고 Shread.Sleep (100)를 호출하십시오.
- 프로세스에서 읽으십시오.
따라서 WebApp 내에 실행 파일을 넣거나 별도의 설치가 필요한 해킹 측면 외에는 이것이 제대로 작동하는 것처럼 보이지만 여전히 남용 테스트를 수행해야합니다.
다른 팁
서버에 Posibility Run Process ()가 있으면 XPDF를 사용할 수 있습니다. http://www.foolabs.com/xpdf/ UTILS 중 하나는 PDFTOTEXT이며 텍스트 I PDF 파일을 추출하고 심지어 일부 유형의 레이아웃을 유지할 수 있습니다.
예전에는 Adobe Search와 MS Index Service가 PDF 파일의 텍스트도 추출 할 수있는 예에 대해 들었습니다.
제휴하지 않습니다 StackOverflow