ファイルを2回読み込もうとしていて、タイトルにエラーが表示されています。コードは最初にエラーなしでファイルを読み込みますが、別の方法で同じファイルを再度読み取ろうとすると、PDFヘッダーの署名が見つかりません。エラー。エラーなしでファイルを2回読むにはどうすればよいですか?ありがとう。ここで「PDFヘッダー署名が見つかりません」 Cで同じファイルを2回読む#
public ActionResult Function(HttpPostedFileBase file, string l)
{
try
{
var file2 = file;
var ef = reader.ExtractReport(file.InputStream);
var ef2 = reader.ExtractReportMultiple(file2.InputStream);
//if (ef == null)
_is = reader.ReadReport(ef, _is, out warning);
}
catch(Exception e){}
}
私の抽出、レポートメソッドです:
public ExcelFile ExtractReport(Stream file)
{
var f = new SautinSoft.PdfFocus { Serial = "1234567890" };
f.OpenPdf(file);
f.ExcelOptions.SingleSheet = true;
if (f.PageCount <= 0) return null;
var xls = f.ToExcel();
if (xls == null) return null;
var stream = new MemoryStream(xls);
ExcelFile ef = ExcelFile.Load(stream, LoadOptions.XlsDefault);
//var definedIndex = 10;
//var columnSize = ef.Worksheets[0].GetUsedCellRange(true).LastColumnIndex;
file.Close();
f.ClosePdf();
return ef;
}
public ExcelFile ExtractReportMultiple(Stream file)
{
var f = new SautinSoft.PdfFocus { Serial = "1234567890" };
f.OpenPdf(file);
//f.ExcelOptions.SingleSheet = true;
if (f.PageCount <= 0) return null;
var xls = f.ToExcel();
if (xls == null) return null;
var stream = new MemoryStream(xls);
ExcelFile ef = ExcelFile.Load(stream, LoadOptions.XlsDefault);
//var definedIndex = 10;
//var columnSize = ef.Worksheets[0].GetUsedCellRange(true).LastColumnIndex;
file.Close();
f.ClosePdf();
return ef;
}
最初の後に 'Stream.Position'を0に設定してみてくださいストリームの使用。 *ストリームは、ストリームをシークできるかどうかを判断するためにCanSeekプロパティを使用します。*ストリームを 'MemoryStream'またはファイルにコピーし、そのコピーにアクセスします。さらに、ストリームを 'Extract *'メソッドではなく、呼び出しメソッドで 'Close 'しないでください。 – mkl