2012-12-04 42 views
0

我正在使用iTextSharp.i生成PDF,它有一个HTMl页面,我正在阅读HTML页面,然后生成PDF.but问题是页面的一半是在PDF中,另一半的页面用完了PDF中的页面.i表示页面的一半以PDF格式显示,而另一半页面则以PDF格式切割。使用iTextSharp.dll生成PDF时耗尽PDF页面

我的代码是这样的Load事件..

string fileContents; 
    string FilePath = Server.MapPath("print-withoutlogin.html"); 
    StreamReader mstrFileStreamReader = new StreamReader(FilePath); 
    try 
    { 
     fileContents = mstrFileStreamReader.ReadToEnd(); 
     byte[] result = createPDF(fileContents.ToString()).GetBuffer(); 

     Response.Clear(); 
     Response.AddHeader("Content-Length", result.Length.ToString()); 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("Accept-Ranges", "bytes"); 
     Response.Buffer = true; 
     Response.AddHeader("Expires", "0"); 
     Response.AddHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0"); 
     Response.AddHeader("Pragma", "public"); 
     Response.AddHeader("content-Transfer-Encoding", "binary"); 
     Response.AddHeader("Content-Disposition", "attachment; filename=kartik.pdf"); 
     Response.BinaryWrite(result); 
     Response.Flush(); 
     Response.End(); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     mstrFileStreamReader.Close(); 
    } 

private MemoryStream createPDF(string html) 
{ 
    MemoryStream msOutput = new MemoryStream(); 
    TextReader reader = new StringReader(html); 

    Document document = new Document(PageSize.A4, 0, 0, 50, 50); 

    PdfWriter writer = PdfWriter.GetInstance(document, msOutput); 
    HTMLWorker worker = new HTMLWorker(document); 
    //worker.SetStyleSheet(styles); 


    // step 4: we open document and start the worker on the document 
    document.Open(); 
    worker.StartDocument(); 
    // step 5: parse the html into the document  
    worker.Parse(reader); 
    // step 6: close the document and the worker  
    worker.EndDocument(); 
    worker.Close(); 
    document.Close(); 

    return msOutput; 
} 
+0

那么究竟是什么问题?您有2页内容,只有1页正在放入PDF中? –

+0

@ramhound:只有一个页面是..所以我只能看到一半的页面.. –

+0

你能提供一个样本PDF和HTML源代码(和CSS,如果适用)? – mkl

回答

0

你有没有使用Crystal Reports考虑?我觉得这很容易,你可以使用

pdfStream = (MemoryStream)report.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
+0

:你可以给我更多的细节,你想告诉我...?我不完全得到... –