2009-04-25 3 views

ответ

2

Вы можете использовать iText #, это основано на аналогичном Java-проекте.

http://itextsharp.sourceforge.net/

Вам не нужно Crystal Reports в сочетании с этим. Если вам нужно что-то более надежного (но дорогой), я использовал это с большим успехом со сложным PDF-файлами:

http://www.pdflib.com/

0

Возможной библиотека iTextSharp. По-видимому, iText - это огромная сделка, но я не видел ее при работе с iTextSharp по требованию, но это было много лет назад.

0

Самый простой способ - использовать стороннюю библиотеку. Я использовал ASPOSE.PDF в прошлом с хорошими результатами.

http://www.aspose.com/categories/file-format-components/aspose.pdf-for-.net-and-java/default.aspx

Я также попытался PDF Sharp, его с открытым исходным кодом, но не был flexable.

http://pdfsharp.com/PDFsharp/

0

У вас есть несколько вариантов here с открытым исходным кодом.

-2
protected void btnReport_Click(object sender, EventArgs e) 

{ 

    showReport(); 

} 

private void showReport() 

{ 

    DataTable dat = Reports.getPartyWiseJobStatusReport(Convert.ToInt16(ddlDivName.SelectedValue), Convert.ToInt16(ddlJobGroup.SelectedValue), Convert.ToInt16(ddlProjectStatus.SelectedValue)); 

    ReportDocument rptdoc = new ReportDocument(); 

    string path = Server.MapPath("~/Reports/rptPartyWiseJobStatus.rpt"); 

    rptdoc.Load(path); 

    rptdoc.SetDataSource(dat); 

    //rptdoc.SetParameterValue(0, ddlDivName.SelectedItem.Text); 
    //ExportOptions exportOpts1 = rptdoc.ExportOptions; 
    rptdoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; 

    rptdoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile; 

    rptdoc.ExportOptions.DestinationOptions = new DiskFileDestinationOptions(); 

    ((DiskFileDestinationOptions)rptdoc.ExportOptions.DestinationOptions).DiskFileName = Server.MapPath("~/Reports/rptPartyWiseJobStatus.pdf"); 

    rptdoc.Export(); 

    rptdoc.Close(); 

    rptdoc.Dispose(); 

    Response.ClearContent(); 

    Response.ClearHeaders(); 

    Response.ContentType = "application/pdf"; 

    Response.AppendHeader("Content-Disposition", "attachment; filename=rptPartyWiseJobStatus.pdf"); 

    Response.WriteFile("~/Reports/rptPartyWiseJobStatus.pdf"); 

    Response.Flush(); 

    Response.Close(); 

    File.Delete(Server.MapPath("~/Reports/rptPartyWiseJobStatus.pdf")); 

} 

общественности статической DataTable getPartyWiseJobStatusReport (Int16 DivisionID, Int16 JobGroup, Int16 ProjectStatus)

{ строка _procName = "sp_T_Proposal_SelectPartyWiseJobStatus";

DataTable dt1 = new DataTable(); 

    Database objDatabase = DatabaseFactory.CreateDatabase(); 

    DbCommand objDbCommand = objDatabase.GetStoredProcCommand(_procName); 

    objDatabase.AddInParameter(objDbCommand, "@DivisionID", DbType.Int16, DivisionID); 

    objDatabase.AddInParameter(objDbCommand, "@JobGroup", DbType.Int16, JobGroup); 

    objDatabase.AddInParameter(objDbCommand, "@ProjectStatus", DbType.Int16, ProjectStatus); 

    using (IDataReader dr = objDatabase.ExecuteReader(objDbCommand)) 

    { 

     dt1.Load(dr); 

    } 

    return dt1; 

} 
+2

кода только ответы трудно понять, когда кто-то пытается на самом деле понять что-то, а не просто «показать мне дэ codez». –

+0

Этот код снова не будет работать даже на копии пасты. –