2010-11-15 139 views
0

我正在編寫一個ASP.NET Web應用程序。如何獲取多個文件下載的文件大小

我計算了我下面提到的PDF文件的總大小。這是什麼回報?當我下載一個2KB的文件時,它返回2KB的大小,這是正確的。但是當我下載2個大小爲2KB的文件時,它返回的總大小是2.16KB。那是對的嗎?它應該返回4KB嗎?

StringReader reader = new StringReader(content); 
MemoryStream ms = new MemoryStream(); 
Document doc = new Document(PageSize.A4, 50, 50, 30, 30); 
HTMLWorker parser = new HTMLWorker(doc); 
PdfWriter.GetInstance(doc, ms); 
doc.Open(); 
try 
{ 
    parser.Parse(reader); 
} 
catch (Exception ex) 
{ 
    Paragraph paragraph = new Paragraph("Error! " + ex.Message); 
    paragraph.SetAlignment("center"); 
    Chunk text = paragraph.Chunks[0] as Chunk; 
    if (text != null) 
    { 
     //text.Font.Color = iTextSharp.text.BaseColor.RED; 
    } 
    doc.Add(paragraph); 
} 
finally 
{ 
    doc.SetMargins(10, 10, 10, 10); 
    doc.Close(); 
} 
Byte[] buffer = ms.GetBuffer(); 
if (buffer != null) 
{ 
    Response.ContentType = "application/pdf"; 
    Response.AppendHeader("content-disposition", "attachment;filename=FileName.pdf"); 
    //Response.AddHeader("content-length", buffer.Length.ToString()); 
    Response.BinaryWrite(buffer); 
} 
+0

我想你使用.Net,是ASP.Net還是winforms應用程序? iTextSharp與您的問題有什麼關係?是否因爲你正在下載PDF文件? – Jla 2010-11-15 09:58:12

+0

我的意思是所有的pdf。我在使用asp.net web應用程序。 – Pooja 2010-11-22 05:02:42

回答

0

聽起來像你打開兩個文件到同一個緩衝區,並期望他們被附加到另一個。相反,第二個是取代第一個。

在簡單的C#程序中嘗試所有這些獨立功能。如果它不起作用,它顯然不會在ASP頁面中工作。 OTOH,如果它在那裏工作,但不在ASP中,那麼它是一個ASP問題,而不是iTextSharp的問題。 PS:我以爲doc.close會關閉PdfWriter使用的流。看代碼,默認情況下(來自java源的protected boolean closeStream = true;)。沿線某處可能有某種叫做setCloseStream(false)的地方。

PPS:將兩個PDF堆疊到相同的二進制流中不是一個好主意。你需要把它們作爲單獨的附件寫出來......在這一點上,這個問題是沒有意義的。