2013-11-23 4 views
0

Если я сохранить файл это загружаемый PDF бросками испорченный формат msg.Thing, если я удалить ниже код строка resumetext = ParsePdf (resumedoc.PostedFile.InputStream); Файл Pdf сохраняется отлично. Я могу открыть его. Если я добавлю вышеуказанный код, файл Pdf будет сохранен как поврежденный формат.Itextsharp Pdf в текст извлечения

Я могу отлично прочитать текст в обоих условиях. Пожалуйста, помогите мне разобраться в проблеме.

string ext = System.IO.Path.GetExtension(FileUp.PostedFile.FileName); 
     if (ext == ".pdf") 
     { 
    //resumedoc is input type='file' 
      string resumetext = ParsePdf(resumedoc.PostedFile.InputStream); 
      string Filename = "dddd" + ext; 
      string FilePath = "E:\\temp\\" + Filename; 
      FileUp.PostedFile.SaveAs(FilePath);//Problem arises only here 
      Response.Write("Uploaded"); 

} 

public string ParsePdf(Stream inFileName) 
{ 
    StringBuilder text = new StringBuilder(); 
    PdfReader pdfReader = new PdfReader(inFileName); 
    for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
    { 
     try 
     { 
      ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
      //ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
      string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 
      text.Append(System.Environment.NewLine); 
      currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); 
      text.Append(currentText); 
     } 
     catch { } 

    } 
    return text.ToString(); 
} 
+0

Habe вы стиснутые первый вызова 'FileUp.PostedFile.SaveAs (Filepath)' и только после этого 'строка resumetext = ParsePdf (resumedoc.PostedFile.InputStream)'? – mkl

+0

Не связано с вашей проблемой, но, пожалуйста, смотрите это сообщение, объясняя, почему вы никогда не должны использовать 'Encoding.UTF8.GetString (ASCIIEncoding.Convert (Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes (currentText))); http : //stackoverflow.com/a/10191879/231316 –

ответ

1

Я думаю, что при чтении потока вы перемещаете текущую позицию в потоке и который бесконтрольный в SaveAs(), который ожидает положение, чтобы быть в нуле. После разбора, но до написания попытки:

FileUp.PostedFile.InputStream.Seek(0, SeekOrigin.Begin); 
Смежные вопросы