Создание PDF-файла через ASP.NET - PullRequest
1 голос
/ 25 апреля 2009

Что требуется для создания файла PDF с помощью приложения ASP.NET, отличного от Crystal Reports?

Ответы [ 5 ]

2 голосов
/ 25 апреля 2009

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

http://itextsharp.sourceforge.net/

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

http://www.pdflib.com/

0 голосов
/ 24 сентября 2012
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"));

}

public static DataTable getPartyWiseJobStatusReport (Int16 DivisionID, Int16 JobGroup, Int16 ProjectStatus)

{ string _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;

}
0 голосов
/ 25 апреля 2009

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

0 голосов
/ 25 апреля 2009

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

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

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

http://pdfsharp.com/PDFsharp/

0 голосов
/ 25 апреля 2009

Одна из возможных библиотек: iTextSharp . По-видимому, iText - это грандиозная сделка, но я не видел ее, когда работал с iTextSharp над требованием, но это было много лет назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...