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 중국어 웹사이트의 기타 관련 기사를 참조하세요!