String GetPDFContentString(String path) { var sb = new StringBuilder(); var reader = new PdfReader(path); { for (Int32 i = 1; i <= reader.NumberOfPages; i++) { PdfDictionary pdfDictionary = reader.GetPageN(i); PRIndirectReference objectRef; var PName = PdfName.CONTENTS; try { objectRef = pdfDictionary.Get(PName) as PRIndirectReference; } catch (Exception ex) { return ex.Message; } var stream = PdfReader.GetPdfObject(objectRef) as PRStream; byte[] SBytes = PdfReader.GetStreamBytes(stream); var token = new PRTokeniser(SBytes); while ((token.NextToken())) switch (token.TokenType) { case PRTokeniser.TK_STRING: sb.Append(token.StringValue); break; case PRTokeniser.TK_OTHER: switch (token.StringValue) { case "ET": sb.Append("\n"); break; } break; } token = null; stream = null; objectRef = null; } } reader = null; return sb.ToString();