I use a static method to merge my documents into a single PDF document but cannot close any of my streams within the method. Attempting to use the subsequently produced document gives a stream closed error.
///
/// Merges the render docs to PDF.
///
///
public static Aspose.Pdf.Document MergeRenderDocsToPDF(Dictionary<string, object> itemsToMerge)
{<span style="color:#2b91af;">PdfFileEditor</span> pdfEditor = <span style="color:blue;">new</span> <span style="color:#2b91af;">PdfFileEditor</span>(); Aspose.Pdf.<span style="color:#2b91af;">Document</span> returnItem = <span style="color:blue;">null</span>; <span style="color:green;">// Set the merge array to how many items are in the group</span> <span style="color:#2b91af;">MemoryStream</span>[] itemLists = <span style="color:blue;">new</span> <span style="color:#2b91af;">MemoryStream</span>[itemsToMerge.Keys.Count]; <span style="color:#2b91af;">MemoryStream</span> finalDoc = <span style="color:blue;">new</span> <span style="color:#2b91af;">MemoryStream</span>(); <span style="color:blue;">int</span> i = 0; <span style="color:green;">// Go through each group item in order and merge the data</span> <span style="color:blue;">foreach</span> (<span style="color:blue;">string</span> key <span style="color:blue;">in</span> itemsToMerge.Keys) { <span style="color:blue;">object</span> renderedDoc = itemsToMerge[key]; <span style="color:blue;">if</span> (renderedDoc != <span style="color:blue;">null</span>) itemLists[i] = ConvertRenderObjectToFileSpecMemoryStream(renderedDoc, key); i += 1; } pdfEditor.CloseConcatenatedStreams = <span style="color:blue;">true</span>; <span style="color:blue;">if</span> (i > 1) pdfEditor.Concatenate(itemLists, finalDoc); <span style="color:blue;">else</span> finalDoc = itemLists[0]; returnItem = <span style="color:blue;">new</span> Aspose.Pdf.<span style="color:#2b91af;">Document</span>(finalDoc); returnItem.Optimize(); returnItem.Save(); <span style="color:green;">// Tidy up the streams by closing them to prevent memory leaks</span> <span style="color:green;">//for (int j = 0; j < itemLists.Length; j++)</span> <span style="color:green;">// itemLists[j].Close();</span> <span style="color:green;">//itemLists = null;</span> <span style="color:green;">// HACK not closing the stream because otherwise PDF file fails due to open stream.... need to test this for memory leak......</span> <span style="color:green;">//finalDoc.Close();</span> <span style="color:green;">//finalDoc = null;</span> <span style="color:blue;">return</span> returnItem; }