Possibility 1
This error usually means there is a version mismatch between the component itself (such as asppdf.dll) and
the .NET interop assembly (such as ASPPDFLib.dll).
For example, the server has version 1.5 of AspPDF installed, but the application uses the interop assembly
shipped with version 1.6.
The problem can be fixed as follows:
Method 1 (recommended): Download the component in question from its respective web site and reinstall it.
The component and interop assembly
DLLs included in the installer are guaranteed to match each other.
Method 2: If reinstallation of the component is not possible, you should create a new interop assembly
from the currently installed version of component dll using the command-line utility TLBIMP,
and then use that assembly in your .NET application by placing it in the /Bin subdirectory. For example:
c:\>TLBIMP c:\path\asppdf.dll
Possibility 2
Due to the way garbage collection works under .NET, object destruction is delayed and
a long-running loop creating new objects may cause the process to run out of memory and crash. Forcing garbage collection
inside the loop will help avoid the crash.
Consider the following code snippet converting multi-image TIFFs to multi-page PDFs:
void ConvertTiffToPdf( string inputFile, string outputFile )
{
IPdfManager pdfManager = new PdfManager();
IPdfDocument pdfDoc = pdfManager.CreateDocument(Missing.Value);
IPdfPage page;
IPdfImage image = pdfDoc.OpenImage(inputFile);
IPdfParam pdfParam = pdfManager.CreateParam("index=1");
Single width, height;
while (image != null)
{
width = image.Width * 72 / image.ResolutionX;
height = image.Height * 72 / image.ResolutionY;
pdfParam["x"].Value = 0.0f;
pdfParam["y"].Value = 0.0f;
page = pdfDoc.Pages.Add(width, height);
page.Canvas.DrawImage(image, pdfParam);
pdfParam["index"].Value = pdfParam["index"].Value + 1;
image = pdfDoc.OpenImage(inputFile, pdfParam);
}
pdfDoc.Save( outputFile, false );
}
The ConvertTiffToPdf function, if invoked multiple times in a loop, will soon crash because the repeated creation of the PdfImage objects
will cause the process to run out of RAM. To fix this, add a call to System.GC.Collect() inside the loop, as follows:
while (image != null)
{
...
System.GC.Collect();
}