문제

나는 여러 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 파일의 텍스트도 추출 할 수있는 예에 대해 들었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top