> 백엔드 개발 > C++ > iTextSharp가 PDF에서 영어가 아닌 텍스트를 올바르게 추출하지 못하는 이유는 무엇입니까?

iTextSharp가 PDF에서 영어가 아닌 텍스트를 올바르게 추출하지 못하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-11 08:00:42
원래의
657명이 탐색했습니다.

Why Does iTextSharp Fail to Extract Non-English Text from PDFs Correctly?

iTextSharp 및 다국어 PDF: 영어가 아닌 텍스트 추출 문제 해결

다국어 PDF에서 텍스트를 추출하는 것은 까다로울 수 있습니다. iTextSharp는 영어 텍스트에는 효과적이지만 영어가 아닌 문자에는 문제가 있어 텍스트가 손상되거나 누락되는 경우가 많습니다. 문제점과 해결 방법을 살펴보겠습니다.

문제: 영어 이외의 문자가 왜곡됨

일반적인 시나리오에는 iTextSharp를 사용하여 PDF에서 페르시아어 또는 아랍어 텍스트를 추출하는 것이 포함됩니다. 코드는 영어에서는 올바르게 작동하지만 영어가 아닌 문자는 뒤섞여 있거나 불완전하게 나타납니다.

근본 원인: 인코딩 오류

핵심 문제는 .NET 프레임워크 내에서 문자열을 처리하고 인코딩하는 방식에 있습니다. .NET 문자열은 본질적으로 유니코드입니다. 불필요한 인코딩 변환으로 인해 데이터가 손상될 수 있습니다.

문제가 있는 코드 조각은 다음과 같은 경우가 많습니다.

<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
로그인 후 복사
로그인 후 복사

이러한 다중 인코딩 변환 과정이 문제의 원인입니다.

해결책: 인코딩 단순화

해결책은 매우 간단합니다. 중복된 인코딩 변환 줄을 제거하면 됩니다.

<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
로그인 후 복사
로그인 후 복사

이 줄을 제거하면 원래 유니코드 표현이 보존됩니다. 또한 애플리케이션이 유니코드를 지원하고 현재 iTextSharp 버전을 사용하고 있는지 확인하세요.

인코딩 그 이상: 텍스트 순서 고려 사항

인코딩을 해결하면 문자 손상이 해결되지만 잠재적인 텍스트 순서 문제는 해결되지 않습니다. 오른쪽에서 왼쪽으로 쓰는 언어(예: 아랍어 및 히브리어)는 PDF 내에서 역순으로 렌더링될 수 있습니다. 이를 올바르게 처리하려면 텍스트를 적절하게 재배열하기 위한 추가 구문 분석 논리가 필요합니다.

위 내용은 iTextSharp가 PDF에서 영어가 아닌 텍스트를 올바르게 추출하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿