Solved

How do You Export Crystal Report to PDF Without Writing to File and With no Memory Issues?

Posted on 2004-10-01
4
5,341 Views
Last Modified: 2012-06-21
Hello,

I am using Visual Studio .NET 2002.  I have a Crystal Report in my folder, which gets dynamically populated.  The code I have right now displays the report as a PDF without writing a file to the server:

        Dim strConn As String
        Dim SQL As String
       
        strConn = ConfigurationSettings.AppSettings("ConnectString4")
        Dim conn As New OleDbConnection(strConn)

        Dim strPermit As String
        strPermit = Request.QueryString("SWP")
 
        SQL = "SELECT * from VW_SWP where swp_id=" & strPermit
 
        Dim da As New OleDbDataAdapter(SQL, conn)
        da = New OleDbDataAdapter(SQL, conn)

        Dim rpt As CrystalReport1 = New CrystalReport1()

        Dim dt As New DataTable()

        da.Fill(dt)

        rpt.SetDataSource(dt)
       
        CrystalReportViewer1.ReportSource = rpt

        conn.Close()
        conn.Dispose()
        dt.Dispose()

  Dim crExportOptions As ExportOptions

        crExportOptions = rpt.ExportOptions
        With crExportOptions
            .FormatOptions = New PdfRtfWordFormatOptions()
            .ExportFormatType = ExportFormatType.PortableDocFormat
        End With

        Dim req As ExportRequestContext = New ExportRequestContext()
        req.ExportInfo = crExportOptions

        Dim st As System.IO.Stream
        st = rpt.FormatEngine.ExportToStream(req)

        rpt = Nothing

        Response.ClearContent()
        Response.ClearHeaders()
        Response.ContentType = "application/pdf"

        Dim b(st.Length) As Byte

        st.Read(b, 0, st.Length)

        Response.BinaryWrite(b)

        st.Close()
        st = Nothing

        CrystalReportViewer1.Dispose()

        Response.End()

The problem I am having is that everytime the export code gets executed it adds a few MBs to the ASP.NET worker process, and once this gets to about 150 MB the line:   rpt.SetDataSource(dt)
stalls, and therefore the web page never loads, so the report is not shown.  Is there something I'm not disposing of so I have a memory leak, or is there a better way to do this?  And why would the  rpt.SetDataSource(dt) line fail when the worker process is only at 150 MB?  I would think that this is relatively low...Thanks for your help!



Grant
0
Comment
Question by:gcarelse
  • 2
  • 2
4 Comments
 
LVL 42

Accepted Solution

by:
frodoman earned 500 total points
ID: 12202104
I don't see where you're disposing your data adapter [ da.dispose() ] but garbage collection should be handling that so I doubt that's the problem.

Have you applied the VS2002 service pack from Crystal?  It did address some memory leaks - not sure if this was one of them or not.  If you haven't done so you can get the SP here: http://support.businessobjects.com/fix/hot/si75/default.asp?ref=default.asp_wwwjump#Crystal%20Reports%20Service%20Packs

frodoman
0
 

Author Comment

by:gcarelse
ID: 12203136
Hey there frodoman,

I'm not sure if our server guys have applied the VS2002 service pack from Crystal.  I'll get them to download it, and I'll let you know if it solved my problem or not, once they've applied it.  Thanks for the pointer.


Grant
0
 

Author Comment

by:gcarelse
ID: 12301821
Yep, the VS2002 service pack from Crystal solved the problem.  Thanks!


Grant
0
 
LVL 42

Expert Comment

by:frodoman
ID: 12301870
Glad to help - frodoman
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Crystal Reports: 5 Tests for Top Performance It is complete, your masterpiece report.  Not only does it meet your customer’s expectations, it blows them out the water, all they want is beautifully summarised and displayed in a myriad of ways. …
Hot fix for .Net Crystal Reports 10.2.3600.0 to fix problems with sub reports running on 64 bit operating systems ISSUE: Reports which contain subreports fail with error "Missing Parameter Value" DEPLOYMENT SERVER OS: Windows 2008 with 64 bi…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now