Your Privacy Matters: We use our own and third-party cookies to improve your experience on our website. By continuing to use the website we understand that you accept their use. Cookie Policy
965
High memory usage when exporting to PDF
posted

Hello,

Please see the attached example using Infragistics 15.1 on Windows 8.1. The export to pdf of 30,000 records consumes 1GB of memory. I have similar grids with more columns that cause our application to throw an out of memory exception.

Is there any way to optimize the memory usage or should we place a limit on the number of rows that can be exported to PDF?

Thanks in advance.

Grid_PDFExport.zip
  • 6120
    Offline posted

    Hi Anthony,

    Our current PDF engine does not stream the data, it generates the entire file in memory. Because of this, it eventually run out of memory when data involved gets large enough. You can try using a file buffer instead, which will make the application to use on- disk storage instead of memory. You can refer to the following code snippet on how to use a file buffer when exporting a grid to a file.
     
    // AutoSize the grid columns and rows when exporting
    this.ultraGridDocumentExporter1.AutoSize = Infragistics.Win.UltraWinGrid.DocumentExport.AutoSize.SizeColumnsAndRowsToContent;
     
    // Use a file buffer
    this.ultraGridDocumentExporter1.UseFileBuffer = true;
     
    // Specify a file instead of letting the control use the temp folder.
    string bufferFileName = Path.Combine(Application.StartupPath, "ExportFileBuffer.tmp");
    this.ultraGridDocumentExporter1.FileBuffer = bufferFileName;
     
    // Export the grid to a PDF file.
    string exportFileName = Path.Combine(Application.StartupPath, "grid.pdf");
            this.ultraGridDocumentExporter1.Export(this.ultraGrid1, exportFileName, GridExportFileFormat.PDF);

    This helps to some extent but if you still have issues, I recommend submitting a new product idea for a streamed PDF engine.

    You can suggest new product ideas for future versions (or vote for existing ones) at <http://ideas.infragistics.com>.

    There are many benefits to submitting a product idea:

    -          Direct communication with our product management team regarding your product idea.
    -          Notifications whenever new information regarding your idea becomes available.
    -          Ability to vote on your favorite product ideas to let us know which ones are the most important to you.  You will have ten votes for this and can change which ideas you are voting for at any time.
    -          Allow you to shape the future of our products by requesting new controls and products altogether.
    -          You and other developers can discuss existing product ideas with members of our Product Management team.
    Steps to create your idea:
                   
    1.       Log into the Infragistics Product Idea site at http://ideas.infragistics.com (creating a new login if needed).
    2.       Navigate to the product / platform channel of your choice (e.g. WPF, Windows Forms, ASP.NET, HTML5 / Ignite UI, iOS / NucliOS, etc.)
    3.       Add your product idea and be sure to be specific and provide as much detail as possible.

    • Explain the context in which a feature would be used, why it is needed, why it can’t be accomplished today, and who would benefit from it. You can even add screenshots to build a stronger case. Remember that for your suggestion to be successful, you need other members of the community to vote for it. Be convincing!
    • Reference case [case number] in your idea so product management will be able to look back at this case. 

    The Product Idea site puts you in the driver’s seat and allows you to track the progress of your ideas at any time, see how many votes it got, read comments from other developers in the community, and see if someone from the product team has additional questions for you.

    As a workaround you can try printing your Grid using CutePDF,which creates a PDF file. you can read more about CutePDF here.
    http://www.cutepdf.com/

    To select CutePDF as your printer, you can use PrintDialog. By calling Print () method off your UltraGrid you can print your Grid. You can refer to the following links on how to implement this.
    http://www.infragistics.com/community/forums/t/48672.aspx
    http://help.infragistics.com/Help/Doc/WinForms/2012.1/CLR2.0/HTML/Infragistics2.Win.UltraWinGrid.v12.1~Infragistics.Win.UltraWinGrid.UltraGrid~Print().html

    Please let me know if you have any questions. Thank you for contacting Infragistics.

    Sincerely,
    Sahaja Kokkalagadda
    Associate Software Developer, Windows Forms
    http://www.infragistics.com/