When opening many separate AtalaImages to process and save into another file, it is generally best to use the FileSystemImageSource object. It efficiently loads individual frames and save out on a single active stream. It also tries to keep as little additional information in physical memory as possible. In most situations this will result in much less physical memory usage. Here is an example of opening two image files to save to a single Pdf:
C#
private void MergeAndConvertToPdf(string FirstFile,string SecondFile, string OutFilePath)
{
string[] s = new string[2];
s[0] = FirstFile;
s[1] = SecondFile;
FileSystemImageSource fsis = new FileSystemImageSource(s,true);
//true does all frames in both files
PdfEncoder encoder = new PdfEncoder();
using(FileStream OutStream = new FileStream(OutFilePath, FileMode.OpenOrCreate))
{
encoder.Save(OutStream,fsis,null);
}
}
VB.NET
Private Sub MergeAndConvertToPdf(ByVal FirstFile As String, ByVal SecondFile As String, ByVal OutFilePath As String)
Dim s As String() = New String(1) {}
s(0) = FirstFile
s(1) = SecondFile
Dim fsis As New FileSystemImageSource(s, True)
'True does all frames in both files
Dim encoder As New PdfEncoder()
Using OutStream As New FileStream(OutFilePath, FileMode.OpenOrCreate)
encoder.Save(OutStream, fsis, Nothing)
End Using
End Sub
If additional processing needs to be done on images being controlled by a FileSystemImageSource, this article explains how to overload the FileSystemImageSource to have it process each frame individually:
HOWTO: Efficiently Process Images as they are Saved Into a PDF
Original Article:
Q10257 - HOWTO: Use Many Framed Images Efficiently