pdf 파일의 텍스트 부분을 캡처하기 위해 C#으로 iText 라이브러리를 사용하려고합니다.첫 번째 페이지 이후에 iText가 PDF의 텍스트 내용을 반환하지 않습니다.
엑셀 2013에서 내 보낸 pdf를 만든 다음 웹에서 itext 사용법 샘플을 복사했습니다 (libref를 프로젝트에 추가했습니다).
완벽하게 첫 페이지를 읽지 만 이후에는 정보가 왜곡됩니다. 그것은 첫 번째 페이지의 일부를 유지하고 다음 페이지와 정보를 병합합니다. 주석 처리 된 줄은 문제를 해결하려고 할 때 문자열 "thePage"가 for 루프 안에 다시 만들어졌습니다.
다음은 코드입니다. 나는이 문제에 도움을 줄 수있는 사람에게 pdf를 이메일로 보낼 수 있습니다. 사전에
덕분에
public static string ExtractTextFromPdf(string path)
{
ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();
using (PdfReader reader = new PdfReader(path))
{
StringBuilder text = new StringBuilder();
//string[] theLines;
//theLines = new string[COLUMNS];
//string thePage;
for (int i = 1; i <= reader.NumberOfPages; i++)
{
string thePage = "";
thePage = PdfTextExtractor.GetTextFromPage(reader, i, its);
string [] theLines = thePage.Split('\n');
foreach (var theLine in theLines)
{
text.AppendLine(theLine);
}
// text.AppendLine(" ");
// Array.Clear(theLines, 0, theLines.Length);
// thePage = "";
}
return text.ToString();
}
}
각 페이지마다 새로운 전략 객체를 사용하십시오. 전략 객체는 텍스트 데이터를 수집하고 새 페이지가 시작되었는지 여부를 알지 못합니다. – mkl
감사합니다. 루프 내부에서 객체를 인스턴스화하고 문제를 해결했습니다. 나는 문제를 해결하는 대답에 "upvote"해야한다고 알고 있지만 어떻게 해야할지 모르겠습니다. 어쨌든 당신에게 좋은 반응과 신속한 반응을 주셔서 감사합니다. – user1555945
나는 대답이 아니라 주석만을 만들었습니다. 나는 그것을 명백하게 대답 할 것이고, 당신은 그것의 왼쪽에있는 표시를 클릭함으로써 그 대답을 받아 들일 수있다. – mkl