Under most circumstances, you will want to install ABCpdf .NET using the standard installer and register it using the PDFSettings control panel.

Occasionally, you may wish to install ABCpdf manually. To do this, you will need the files listed below.

32 vs 64. Do I need the 32-bit DLLs or the 64-bit ones or both?

If your project targets x86 then you will only ever need the 32-bit DLLs (these will execute under WOW64 on a 64-bit machine). If it targets x64 then you will only ever need the 64-bit DLLs.

If your project targets AnyCPU then then you need the 32-bit DLLs on a 32-bit version of Windows and the 64-bit ones on a 64-bit version.

However it does not hurt to have all the DLLs installed. Only the ones which are needed will be used.

 

File Name Notes
ABCpdf.dll

The Assembly used by .NET.

The installer places this Assembly in the GAC to allow global access from any .NET application. It installs a second reference copy at the following location:

%ProgramFiles%\WebSupergoo\ABCpdf11 .NET\Common\

However, if you are installing manually, you can just place this file in the bin directory of your application.

ABCpdf11-32.dll
ABCpdf11-64.dll

The ABCpdf core engine.

There is a 32-bit and a 64-bit version of this DLL. Having both installed is the safest and simplest way to deploy.

This DLL contains the core engine. It incorporates our proprietary Direct to PDF technology and is designed for high performance PDF manipulation in a multithreaded environment. This DLL is placed into the System32 directory typically at:

%SystemRoot%\System32\

However, if you are installing manually, you can just place this file in the bin directory of your application.

3DGlue11-32.dll
3DGlue11-64.dll

This is an optional component required for use of the PDF 3D rendering.

There is a 32-bit and a 64-bit version of this DLL. Having both installed is the safest and simplest way to deploy.

This DLL is normally located in the same directory as the core engine.

ChakraCore32.dll
ChakraCore64.dll

This is an optional component required for form JavaScript calculations.

There is a 32-bit and a 64-bit version of this DLL. Having both installed is the safest and simplest way to deploy.

If this component is not installed then field JavaScript calculations will not function. The effect will be the same as having XForm.UseFieldScript set to false.

This DLL is normally located in the same directory as the core engine.

PrintHook32.dll
PrintHook64.dll

This is an optional component required for use of the XpsAny ReadModule.

It is unlikely that you will want to use this, as the functionality of the XpsAny module has been largely superceded by other modules.

The component intercepts the Microsoft XPS Document Writer and enables ABCpdf to import an extended range of file types via XPS.

There is a 32-bit and a 64-bit version of this DLL. Having both installed is the safest and simplest way to deploy.

This DLL is normally located in the same directory as the core engine.

ABCGeckoWP.exe,
XULRunner38_0 (directory)

This is an optional component required for use of the Gecko HTML engine.

This EXE should be placed in the bin directory (next to ABCpdf.dll).

This EXE is the interface ABCpdf uses to access the Gecko HTML engine. However, it is not the engine itself. The engine is held in the XULRunner38_0 folder, which must be located in the same directory as ABCGeckoWP.exe.

ABCGecko cannot function without the XULRunner38_0 folder in the same directory as ABCGeckoWP.exe. On x64 Windows, even if ABCGeckoWP.exe is found only in %SystemRoot%\System32 (though it should be placed only in %SystemRoot%\SysWOW64 for being 32-bit), it never looks up XULRunner38_0 folder in %SystemRoot%\System32 (but in %SystemRoot%\SysWOW64) because of File System Redirection.

TaskGardener.exe

This is an optional component required for out-of-process execution in restricted permission environments.

The Gecko HTML engine runs in separate worker processes. In a restricted environment, such as IIS, it is not possible to specify the user account to directly start a process. If your IIS application specifies the user in Doc.HtmlOptions.ProcessOptions.UserName, you will need to install this EXE as a Windows Service so that it starts processes for ABCpdf.

Run it with -install to install it as a Windows Service or with -uninstall to uninstall it.

ABCImageMagick.msi

This is an optional component.

It is unlikely that you will want to use this.

However it provides some extra image import functionality via the separate ABCImageMagick COM+ Application.

This is not automatically installed and to use it you will need to manually install using ABCImageMagick.msi.

If you are deploying manually to a restricted permission environment such as IIS and also you are using the MSHtml engine for converting HTML content, then you may need to check the registry for certain structures. The registry key HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Devices should contain printer entries. The Microsoft XPS Document Writer that comes with Windows suffices to satisfy this requirement. If there are no entries in this key, you can copy them from HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices. Absence of entries in this registry key may result in errors from the MSHtml engine when using ABCpdf in IIS.

Background. Why XULRunner?

Well, XUL (pronounced zool) is a kind of enhanced XHTML designed for cross platform user interface development. The name XUL is both an acronym and also a reference to the scene in Ghostbusters in which an ancient god called Zuul possesses Dana and tells Dr Venkman,

"There is no Dana, only Zuul!"

Since XUL incorporates everything needed for an application in a completely self-contained manner, the developers adopted the catchphrase,

"There is no data, only XUL."

Other references to the Ghostbusters movie are scattered throughout the development of Mozilla, Gecko and Firefox.

Most calls to ABCpdf will result in a trial license being installed if it is found that no license has yet been installed. At minimum, all that is required is to query the value of the XSettings.LicenseDescription property. Write access to the registry is required for a trial to be inserted.

[C#]
using WebSupergoo.ABCpdf11;
MessageBox.Show("New License: " + XSettings.LicenseDescription);

[Visual Basic]
Imports WebSupergoo.ABCpdf11
MessageBox.Show("New License: " + XSettings.LicenseDescription)

You can use a full license key as provided to you when you purchase, or you can use a trial license key copied from the PDFSettings application. To enter a license key, call XSettings.InstallLicense or at application startup before any ABCpdf objects have been created. If you have purchased a Redistribution license, you may prefer to call XSettings.InstallRedistributionLicense. In both cases the license will remain available to the process until it unloads.

[C#]
using WebSupergoo.ABCpdf11;
// here we use a trial license key as copied from the PDFSettings application
if (XSettings.InstallLicense("cd9b5c07db69df2bf57c0a04d9bca58b10c44889c9fb197984e592f49addfce5ec5fe85d7b9205bc"))
  MessageBox.Show("License Installed Successfully: " + XSettings.LicenseDescription);
else
  MessageBox.Show("License Installation Failed");

[Visual Basic]
Imports WebSupergoo.ABCpdf11
' here we use a trial license key as copied from the PDFSettings application
If XSettings.InstallLicense("cd9b5c07db69df2bf57c0a04d9bca58b10c44889c9fb197984e592f49addfce5ec5fe85d7b9205bc") Then
  MessageBox.Show("License Installed Successfully: " + XSettings.LicenseDescription)
Else
  MessageBox.Show("License Installation Failed")
End If

Shared Hosts. Most installations of ABCpdf .NET on shared servers are seamless. However, you need to be aware that you are a guest on the server and your host may have locked down permissions in ways which will make your life difficult. If this occurs, there is typically little that either you or we can do about it.

This is why we recommend deployment on a dedicated server. Dedicated servers are cheaper than you might think, and the level of control they allow is only one of the very significant advantages they afford. It is one of the best decisions you can make.

If you are intending to install on a shared server, the essential thing to do is to deploy early and discover any issues before they become major problems.