Some aspects of ABCpdf can be controlled on a global level using
registry keys.

In general, you will not need to use these, and you should take
the relevant precautions if you decide to insert them.

Registry settings are held at:

HKEY_LOCAL_MACHINE\SOFTWARE\WebSupergoo\ABCpdfNET\11

Except those listed as "registry only", they can also be
specified in app.config or web.config. Please see XSettings.SetConfigSection
for the syntax.

Name

Type

Default

Overridable

Description

TempDirectory

STRING

""

ABCpdf uses the temp directory.

You can override the location it uses by setting this value. The
specified directory must pre-exist; ABCpdf does not create the
non-default temp directory.

V3Compatible

DWORD

0 [false]

By setting this value to 1, you can ensure full compatibility
with ABCpdf version 3 layout algorithms.

This setting is obsolete.

V4Compatible

DWORD

0 [false]

By setting this value to 1, you can ensure full compatibility
with ABCpdf version 4 layout algorithms.

This setting is obsolete.

V5Compatible

DWORD

0 [false]

By setting this value to 1, you can ensure full compatibility
with ABCpdf version 5 layout algorithms.

This setting is obsolete.

MemoryManager

DWORD

1

This determines the memory management routines used by
ABCpdf.

The default memory manager is designed for speed and low
fragmentation.

You are unlikely to want to change the value of this key.

DisableCCITT

DWORD

0 [false]

ABCpdf compresses black and white images using CCITT
compression.

You can disable this type of compression if you wish to produce
simple flate compressed images.

InsertJPEGsDirect

DWORD

1 [true]

When you insert JPEGs using the XImage object, they bypass the
normal rendering process and are inserted direct. This can result
in a considerable reduction in file size without any loss of visual
quality.

However, the final output may vary slightly from that produced
by older versions of ABCpdf.

By setting this value to 0, you can ensure compatibility.

InsertTIFFsDirect

DWORD

1 [true]

When you insert TIFFs using the XImage object, they bypass the
normal rendering process and are inserted direct. This can result
in a considerable reduction in file size without any loss of visual
quality.

If this flag is set this enables certain special features like
autorotation.

If the flat is cleared then these features are disabled.

InsertEmbeddedCCITTsDirect

DWORD

1 [true]

Formats such as TIFF may contain embedded CCITT data which can
be inserted directly into a PDF.

On the positive side avoiding a decompression-recompression
cycle can save significant time. On the negative side, because the
data is not decompressed, there are no checks to ensure the
validity of the compression. Acrobat is generally more particular
about the format of data and occasionally it can fail to display
data that renders correctly when inside a different wrapper. This
is rare but not unheard of.

If this flag is set this enables the direct import of this type
of data. If the flat is cleared then these features are
disabled.

InsertEmbeddedJBIG2sDirect

DWORD

1 [true]

JBIG2 images can be inserted directly into a PDF.

On the positive side avoiding a decompression-recompression
cycle can save significant time. On the negative side, because the
data is not decompressed, there are no checks to ensure the
validity of the compression. Acrobat is generally more particular
about the format of data and occasionally it can fail to display
data that renders correctly when inside a different wrapper. This
is not something we have ever seen any problems with but it is
possible.

If this flag is set this enables the direct import of this type
of data. If the flat is cleared then these features are
disabled.

InsertEmbeddedJPEGsDirect

DWORD

1 [true]

Formats such as TIFF may contain embedded JPEG data which can be
inserted directly into a PDF.

On the positive side avoiding a decompression-recompression
cycle can save significant time. On the negative side, because the
data is not decompressed, there are no checks to ensure the
validity of the compression. Acrobat is generally more particular
about the format of data and occasionally it can fail to display
data that renders correctly when inside a different wrapper. This
is exceptionally rare but not unheard of.

If this flag is set this enables the direct import of this type
of data. If the flat is cleared then these features are
disabled.

ExtractJPEGFromTIFFUsingGDIPlus

DWORD

1 [true]

Formats such as TIFF may contain embedded JPEG data which can be
inserted directly into a PDF.

This data can be extracted by ABCpdf directly or it can be
extracted using features of GDI+. ABCpdf is probably slightly
faster at doing this but historically it has used GDI+ as a first
option before falling back to its own methods.

If this flag is set this feature will be attempted first using
GDI+.

LogEvents

DWORD

1 [true]

Determines whether anything will be logged in the Application
Event Log.

LogErrors

DWORD

0 [false]

Determines whether errors will be logged in the Application
Event Log.

AutoRecover

DWORD

0 [false]

Whether ABCpdf should automatically attempt to recover from
serious errors.

This is generally set to false. Recovery may work in some
situations but in others it will leave the application in an
inconsistent state.

LogOperations

DWORD

0 [false]

Unused in release versions.

MaxOperationTime

DWORD

1,000

Unused in release versions.

LogDirectory

STRING

"%SystemRoot%\Temp\"

Unused in release versions.

LogMaxFileSize

DWORD

0xFFFF

Unused in release versions.

LogAsserts

DWORD

1 [true]

If true, certain run-time consistency checks will be
enabled.

If any consistency check fails, then an error will be logged in
the Application Event Log.

LogAssertsMax

DWORD

5

The maximum number of times an
assertion will log an error. This is kept at a small number to
avoid excessive use of the Application Event Log.

ClearoutSize

DWORD

1,000

On startup, the ABCpdf temp directory is checked. If it appears
that there are a large number of unused items, then the directory
will be cleared.

This setting determines the maximum number of items which are
permitted in the directory before a clearout is deemed
necessary.

LoadType1Fonts

DWORD

1 [true]

Whether ABCpdf should allow the use of
Type 1 fonts.

WriteVersionNumber

DWORD

1 [true]

Whether the ABCpdf version should be
embedded in the PDF output.

SetInfoProps

DWORD

1 [true]

Whether registry keys can be overridden on a per-document
basis.

To override a registry key, use SetInfo with the name of the key
and passing zero as the ID. For example:

theDoc.SetInfo(0, "UseScript", "1")

Note that only keys marked as overridable can be overridden this
way.

CheckSaveRestore

DWORD

1 [true]

Some PDFs do not conform to Adobe document structuring
conventions. For details see section 4.3.1 of the Adobe PDF Specification .

Conforming documents should save the graphics state at the start
of drawing and restore the graphics state after drawing is
complete. This way it is guaranteed that drawing operations are
independent of each other.

Non-conforming documents may make transform and other graphics
state changes which cannot easily be undone. When you add your
content, it is affected by these leftover state changes.

The maximum number of children of non-leaf nodes in the page
tree. If it is 2 or below, no balancing of the page tree is
performed.

The page tree gives the order to the pages. The look-up of pages
from page numbers and the identification of page numbers from the
pages' IDs are performed using the page tree. The time complexity
of these operations is O(PagesMaxKids×log PageCount/log
PagesMaxKids) so the smaller PagesMaxKids, the faster the
operations.

If the value is 3 or above, the entire tree is balanced when the
first time the page tree is modified either by adding a page or
removing a page or a non-leaf node (a Pages object). When a page is
added such that the parent node has more than PagesMaxKids children
or when a page or a non-leaf node is removed such that the
(non-root) parent node has less than PagesMaxKids/2 children (or
equivalently, less than the floor of (PagesMaxKids + 1)/2
children), the page tree is partially balanced. The balancing of
the tree is triggered more often if PagesMaxKids is small.

FontInheritsStyles

DWORD

0 [false]

When the value is false (zero), Doc.AddTextStyled
removes pre-existing bold <b> and italic <i> styles
within specification of font face in the HTML.

When the value is true (non-zero), Doc.AddTextStyled
maintains pre-existing bold <b> and italic <i> styles
within specification of font face in the HTML unless overridden by
the specification.

SVGDrawInvisible

DWORD

0 [false]

This flag controls whether invisible SVG elements are drawn as
transparent objects when converted to PDF. Invisible SVG elements
are defined as those with "visibility" set to "false", those
without any strokes or any fills, or those with both stroke-opacity
and fill-opacity set to 0.

For presentation purposes, it is best to not draw invisible
objects (the default) because transparency in PDF may radically
change the rendering mode in many PDF readers.

AutorotateTIFFImages

DWORD

1 [true]

TIFF and JPEG images may contain flags to indicate orientation
and mirroring.

If this flag is set, ABCpdf will use these flags to ensure that
your TIFF and JPEG images are automatically provided the right way
up.

In ABCpdf10 and earlier, images were autosized if the width or
height of the destination rectangle was zero.

If you were working in TopDown mode the image was
positioned with its top left pinned at the location indicated by
the rectangle. If you were not in TopDown mode the bottom left of
the image was pinned at the location indicated by the rectangle. In
both cases the natural dimensions of the supplied image were used
to determine the displayed width and height resulting in a 72 dpi
output.

The functions that performed autosizing were AddImageBitmap,
AddImageCopy, AddImageDoc, AddImageFile and AddImageObject.

This autosizing was problematic for many reasons and it is now
disabled by default.

Revision 4 used to be the default. However in 2014 Adobe stopped
using it and moved to revision 5.

Adobe products automatically re-encode any revision 4 documents
as revision 5. As such ABCpdf now does the same.

We expect revision 4 to be deprecated in due course.

If, for compatibility, you require the use of revision 4, you
can re-enable it by setting this flag.

CompressedDataPaddingLeniency

DWORD

2

When decompressing data, ABCpdf occaisionally encounters
decompression errors. If a quantity of data is decompressed before
the error occurs, then this value is a tolerance for how much
compressed data is left over after the error.

PreferToUnicode

DWORD

0

Documents can contain multiple different mappings for
characters. Most of the time the mappings are correct and in sync.
Occasionally you may come across PDFs which have inconsistent
mappings in the different tables.

If this occurs then extracting text from a PDF becomes an
imprecise science. Depending on the table used, the output will be
different. Most of the time the differences are small but
sometimes, on severely compromised documents, they can be
abrupt.

In this situation ABCpdf has to determine the most appropriate
table using a heuristic method. To prefer the ToUnicode table over
this heuristic you can set this property to 1 (true).

ProgressiveJPEGRecompressionQuality

DWORD

0

Acrobat can sometimes find it difficult to decompress and
display progressive JPEG images. So sometimes, if you add this type
of data directly into a PDF the image may not display when viewed
in Acrobat.

In the long run we would expect that Adobe will resolve this
issue within Acrobat. However in the shorter run it can be
desirable to work around this issue.

To mitigate the effect of this problem you can detect and
recompress progressive JPEG images as they are added to. To do this
you simply need to specify a quality setting between 1 and 100.

Annotation and Field

Name

Type

Default

Overridable

Description

AnnotBorder

DWORD

0

SetInfo only

The default width of borders on Annotations added to PDF
documents.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

NeverClipAppearances

DWORD

1 [true]

This parameter allows control over the way that text field
appearances are generated.

Some documents contain text fields which are not tall enough for
the text that they contain. There are two choices here. You can
preserve the requested text size and let the text be clipped.
Alternatively, you can reduce the text size so that it fits the
height of the field.

The default behavior is to reduce the text size. However, in
some cases you may want to override this behavior by altering this
setting.

ForceUpdateAppearances

DWORD

0 [false]

In general ABCpdf will try to avoid updating field appearances.
This is because different applications have different ways of
generating field appearances and so any update is likely to cause
changes.

These changes are likely to be pretty subtle - involving pixel
level movements and perhaps changes in text wrapping. However
because there is no specification relating to how field appearances
should be generated these kind of subtle shifts are inevitable if
you regenerate appearance streams.

Acrobat will always regenerate field appearance streams for any
documents in which the NeedsAppearances flag is set. This comes at
the cost of the kind of subtle shifts detailed above. However
because this is done interactively this doesn't tend to matter very
much.

Some PDF producers create PDF documents containing incorrect
appearance streams. Because Acrobat regenerates the field
appearance streams it will display these correctly. ABCpdf will
assume that because they are there they are correct and will
not.

In this case you may wish to mimic the behavior of Acrobat force
the update of the appearance streams. This flag allows you to
specify that this should be the case.

SignatureSizeMultiplier

DWORD

15

This can affect the sizes of buffers ABCpdf will allocate for
the /Contents field in signatures. The value is in 1/10 time, so
the default value represents 1.5 times.

This is a low level setting. If ABCpdf encounters error related
to buffer size not big enough to hold signed messages, you can
manually increase this multiplier.

EnableKeystrokeJS

DWORD

0

SetInfo only

Field JavaScript can be used to modify and validate field
values.

Each time a character is added by a user, a keystroke JavaScript
is triggered to ensure that the value is allowed. Then when the
user leaves the field, a validation JavaScript runs to check the
entire field. Each time one of these scripts is run the field value
may be altered.

Sometimes when you change the value of a field programmatically,
you may want to operate in the same way as a user. So
programmatically changing a value might be equivalent to a user
copying and pasting a value into a field. In that case you would
want both the keystroke and validation scripts to be run in the
same they would be for a user.

This property allows you to enable the keystroke script.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

The size at which a binary search tree is constructed for HTML
rendering.

For larger documents, a binary search tree is a much more
efficient structure for HTML rendering than is a linear search
tree.

For smaller documents, the time taken to build the tree can
outweigh the speed advantages so a linear search tree is
better.

This property determines the point at which ABCpdf shifts its
strategy from linear to binary searches. The number relates to the
number of object fragments in the HTML. The number of object
fragments is extremely dependent on the complexity of the page, but
a couple of hundred object fragments per PDF page would not be
atypical.

DisableFilters

DWORD

1 [true]

SetInfo only

Whether to automatically disable HTML filters.

HTML filters can interfere with the HTML to PDF conversion
process because they are raster rather than vector based. For this
reason, we try to disable them.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

JPEGThreshold

DWORD

256

SetInfo only

The threshold at which images are JPEG compressed.

When an uncompressed image is added to a document ABCpdf may
decide whether to use JPEG (lossy) compression or lossless
compression based on an analysis of the image.

ABCpdf counts the number of colors used in the image and if the
number is greater than this threshold ABCpdf assumes that the image
is continuous tone and thus eligible for JPEG compression. The
threshold for grayscale images is half that for color images.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

UnloadInterval

DWORD

0

SetInfo only

Whether we allow MSHTML to be unloaded when the screen depth
changes.

Appropriate values are 0 (MSHTML is never unloaded) and 10 (it
is unloaded a little while after the screen properties change).

The number actually refers to the number of calls that ABCpdf
makes (once a monitor change has occurred) without keeping MSHTML
force loaded. We assume that at some point during this period,
Windows will unload the DLL.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

MakeURLsUnique

DWORD

1 [true]

Whether to make URLs unique when the page cache is disabled. A
URL parameter with a 7-random-uppercase-letter name and a
7-random-uppercase-letter value is added to the URL. It is applied
to URLs that contain queries or have paths that do not end with a
slash.

Sometimes caching can occur outside of ABCpdf. Making the URL
unique can provide an effective way of forcing the page to be
refreshed.

BgImageVertProximity

DWORD

480

ABCpdf treats background and foreground images differently. For
example, it is generally acceptable to split a background image
across pages while it is much less acceptable to split a foreground
image in this way.

For this reason, ABCpdf tries to determine whether images are
foreground or background using a variety of methods.

If the same image appears a number of times within a limited
area of the HTML, ABCpdf will assume it is a background image.

This property represents the vertical distance (in pixels) above
a particular image in which ABCpdf looks for repeated images.

BgImageMinRepeat

DWORD

5

ABCpdf treats background and foreground images differently. For
example, it is generally acceptable to split a background image
across pages while it is much less acceptable to split a foreground
image in this way.

For this reason, ABCpdf tries to determine whether images are
foreground or background using a variety of methods.

If the same image appears a number of times within a limited
area of the HTML, ABCpdf will assume it is a background image.

This property represents the number of repeats above which
ABCpdf determines that the image is background.

NarrowBgImageMaxWidth

DWORD

80

ABCpdf treats background and foreground images differently. For
example, it is generally acceptable to split a background image
across pages while it is much less acceptable to split a foreground
image in this way.

For this reason, ABCpdf tries to determine whether images are
foreground or background using a variety of methods.

If an image is very tall and thin, ABCpdf will assume it is a
background image.

This property represents the maximum width for this test.

NarrowBgImageMinHeight

DWORD

480

ABCpdf treats background and foreground images differently. For
example, it is generally acceptable to split a background image
across pages while it is much less acceptable to split a foreground
image in this way.

For this reason, ABCpdf tries to determine whether images are
foreground or background using a variety of methods.

If an image is very tall and thin, ABCpdf will assume it is a
background image.

This property represents the minimum height for this test.

CheckBgImages

DWORD

0 [false]

Sometimes, Windows can tell ABCpdf that an HTML page is complete
even though background images have not yet finished loading.

This option allows you to specify that ABCpdf should force-load
any background images.

HTMLBottomExtraMargin

DWORD

30

Change this value to change the extra margin that ABCpdf adds at
the bottom when rendering HTML pages. Due to rendering issues in
Internet Explorer, it is necessary to make the HTML page a bit
taller. This extra margin is then clipped and so it does not alter
the final PDF output.

However, if the page contains objects positioned relatively to
the bottom of the page, the objects may be clipped/shifted. Set
this property to zero or to a smaller value in order to avoid such
problems.

This setting allows you to override the
default URL security policies in place on your machine. You can
open up or lock down security settings using this registry
key.

The string is a sequence of URL Actions (such
as URLACTION_HTML_META_REFRESH) and policies (e.g.
URLPOLICY_DISALLOW) in a space delimited list. Appropriate values
for these type of actions and policies can be found on the
Microsoft web site. The default value for this setting disables
meta-refresh tags.

Treat with caution as existing security
settings are there for a reason.

TrustedSites

STRING

""

Cross domain operations are not normally
permitted when accessing the HTML DOM. This means that if you have
a frameset on one domain and frames in another ABCpdf will be
unable to determine appropriate widths and heights for any of the
frames.

Ideally to resolve this type of issue you
should move the pages to the same domain or reference the domain
within the frameset to ensure that MSHTML will allow this type of
cross domain scripting. In situations where this is not possible
you can specify sites which should be trusted. Any page URLs which
start with one of the trusted site URLs will be assigned a special
trusted status.

Treat with caution as existing security
settings are there for a reason.

CharWidthRatioMin

DWORD

700

When importing EMF or HTML content using the MSHTML engine, this
property specifies the minimum EMF-to-PDF character-width ratio in
1000ths.

Characters whose (EMF and PDF) widths form ratios between the
specified minimum and CharWidthRatioMax (exclusively) assume the
PDF character widths as font substitution may occur. Characters
whose widths form ratios outside the interval are placed as
specified because the text is placed in an unusual way.

CharWidthRatioMax

DWORD

1,400

When importing EMF or HTML content using the MSHTML engine, this
property specifies the maximum EMF-to-PDF character-width ratio in
1000ths.

Characters whose (EMF and PDF) widths form ratios between
CharWidthRatioMin and the specified maximum (exclusively) assume
the PDF character widths as font substitution may occur. Characters
whose widths form ratios outside the interval are placed as
specified because the text is placed in an unusual way.

FlashPreviewTime

DWORD

0

When HTML contained Flash (SWF) movies are added to a PDF
document, ABCpdf will make a preview image for the movie.

The preview is what you will see if you don't have Flash
installed. It is what is used when printing PDFs. In general, it is
what you will see if you open your PDF using a viewer other than
Acrobat.

This value is used for SWF raster import in previous versions
of ABCpdf and has the same meaning as FlashPreviewWaitTime for SWF
vector import.

When the movie is intialized, you can specify a time (in
milliseconds) at which the movie will be started.

Note that many movies contain script which can alter the way
that the movie is played. For example, a script might reset the the
current frame to the start after five seconds of content have been
played. So the content you get by setting the preview time to ten
seconds may be very different to the content a user will see after
watching the movie for ten seconds.

FlashPreviewWaitTime

DWORD

2,000

When HTML contained Flash (SWF) movies are added to a PDF
document, ABCpdf will make a preview image for the movie.

The preview is what you will see if you don't have Flash
installed. It is what is used when printing PDFs. In general, it is
what you will see if you open your PDF using a viewer other than
Acrobat.

This property determines the time (in milliseconds) that the
movie will be given to play before the preview will be made.

Note that many movies contain script which can alter the way
that the movie is played. For example, a movie might reset the the
current frame to the start after five seconds of content have been
played. So the content you get by setting the preview time to ten
seconds may be very different to the content a user will see after
watching the movie for ten seconds.

FlashPreviewDPI

DWORD

96

When HTML contained Flash (SWF) movies are added to a PDF
document, ABCpdf will make a preview image for the movie.

The preview is what you will see if you don't have Flash
installed. It is what is used when printing PDFs. In general, it is
what you will see if you open your PDF using a viewer other than
Acrobat.

This value is used for SWF raster import in previous versions
of ABCpdf and is not used for SWF vector import.

This property determines the resolution (in dots per inch) at
which the preview will be made.

CheckDisplaySettings

DWORD

0

Changing the screen resolution while a process is running can
cause some versions of MSHTML to become confused. If the screen
size is reduced then portions of the output HTML may be clipped at
the right hand side.

It is unusual for this to be a problem because changing the
screen resolution is not a normal event. However some remote access
applications can change screen settings in an uncontrolled way
which means that someone logging onto a server remotely can
sometimes trigger this kind of event in a long running process such
as a web application.

This registry key allows you to control what ABCpdf does when
this type of event is detected. The possible options are.

0 - Ignore any screen changes.

1 - Raise an exception "Display settings changed.". This may be
used as a trigger for recycling the current package and thus
resolving the issue.

2 - Attempt to revert screen to previous settings, raising an
exception only if this could not be done.

HtmlProcessPoolSize

DWORD

10

When using the out-of-process HTML rendering, such as the Gecko
HTML engine or MSHtml with MSHtmlBootstrap specifying
out-of-process, ABCpdf maintains a pool of worker processes. This
value specifies the maximum number of such processes that ABCpdf
can spawn. Please also see XHtmlProcessOptions.MaxProcesses.

The default value is optimized for multi-threaded environments
such as a Web server. If your application does not use multiple
threads to perform HTML rendering, you can reduce this value to
save system resources.

MSHtmlBootstrap

DWORD

0

This setting determines the method ABCpdf uses to bootstrap
MSHTML.

0 - This is the same as 3 (writing to the registry) if IE9 or
above is installed. If IE9 or above is not installed, this is the
same as 5 (no bootstrap).

1 - MSHTML will be hosted out-of-process, and ABCpdf will
attempt to load IE8 DLLs, which allows you to achieve better
compatibility. This requires certain IE8 DLLs to be present in the
system.

2 - ABCpdf will attempt to perform the required registry-based
configuration without writing to the registry. This can be used if
you cannot enable "Load User Profile" or have no access to the
registry.

3 - ABCpdf will write the required configuration to the HKCU
registry hive if equivalent registry values are not in effect. For
IIS applications, this requires "Load User Profile" to be
enabled.

4 - ABCpdf will attempt to load IE8 DLLs in-process, which
allows you to achieve better compatibility. This requires certain
IE8 DLLs to be present in the system, and your application should
not have accessed MSHTML (e.g. using the WebBrowser control) before
ABCpdf loads the DLLs.

5 - ABCpdf will not do additional bootstrap for MSHTML.

AddLinksToIDs

DWORD

1 [true]

This is a setting that may be used to speed up HTML rendering of
documents when AddLinks is set to true.

Fragment links within an HTML page may refer to anchor names or
to element IDs. So to use the LinkPages method one has to keep
track of all the IDs in the page. This can add a significant
overhead for pages which contain many elements with IDs.

If you are not going to use the LinkPages method you can safely
set this property to false. Indeed even if you set it to false
ABCpdf will still keep track of names and IDs in anchor elements as
there is little overhead associated with this subset of
elements.

AddImagePolicy

DWORD

0 [default]

This is a setting that determines how images in HTML are added
to a document.

The default behavior is to add all images directly as long as an
ImageQuality has not been specified. This ensures that the quality
and size of JPEG images is maintained, that transparent PNG images
are inserted using correct transparency and that memory use is
minimized.

By setting this property to one you can force images to be
inserted indirectly. The HTML rendering engine will be used to
decompress any images and then they will be recompressed for
insertion into the PDF.

MSHtmlOverrideKeyPath

STRING

""

The registry key path in HKEY_CURRENT_USER for overriding MSHTML
options. This is the value returned through
IDocHostUIHandler2::GetOverrideKeyPath.

You can place keys/values in the specified key in
HKEY_CURRENT_USER to override values in
"Software\Microsoft\Internet Explorer". While MSHTML queries
"Software\Microsoft\Internet Explorer" in both HKEY_CURRENT_USER
and HKEY_LOCAL_MACHINE, the path specified by this setting is only
queried in HKEY_CURRENT_USER.

If this setting is specified and valid, ABCpdf will write in the
specified key instead of "Software\Microsoft\Internet Explorer"
when bootstrapping MSHTML.

XULRunnerDirectory

STRING

""

The path to the parent directory containing the XULRunner38_0
folder for the Gecko engine.

GeckoPrefFile

STRING

""

The path to the JavaScript file that sets the preferences for
the Gecko engine. See XHtmlOptions.Engine
for details.

IPCTransport

DWORD

0

When MSHTML or the Gecko engine is run in a separate worker
process, this specifies the method of interprocess communication
between ABCpdf and the worker process.

0 - This is the same as 1 if the OS is Windows XP or Windows
Server 2003 or earlier. This is the same as 2, otherwise.

1 - Named pipe.

2 - Standard/console I/O streams.

UseCSSClassToAddTags

DWORD

1 [true]

When the Gecko engine is used, this setting specifies whether
CSS class 'abcpdf-tag-visible' may be used for adding tags
(XHtmlOptions.AddTags).
For example,

When the Gecko engine is used, this setting specifies whether
SMIL animation is stopped. When the animation is stopped, the first
frame/sample is used.

RelCharShiftTolerance

DWORD

60

This value is in 1000ths of the font size. When the Gecko engine
is used, this specifies the maximum relative horizontal shift
between adjacent glyphs to consider the glyphs to be in a
continuous flow of text. Because of font hinting, character widths
and positions reported by Gecko may be different from those in the
fonts. Glyphs in a continuous flow are evenly spaced in the text
area.

AbsCharShiftTolerance

DWORD

500

This value is in 1000ths of a point. (A point is 1/72 of an
inch.) When the Gecko engine is used, this specifies the maximum
absolute horizontal shift between adjacent glyphs to consider the
glyphs to be in a continuous flow of text. Because of font hinting,
character widths and positions reported by Gecko may be different
from those in the fonts. Glyphs in a continuous flow are evenly
spaced in the text area.

ABCChromeDirectory

STRING

""

For HTML rendering using the ABCChrome rendering engine, access
is required to the ABCChrome.exe worker process.

By default a set of paths is searched to allow the worker to be
found. You can specify a directory which should be checked, using
this setting.

ABCChromeReportSearchPath

DWORD

0

If the ABCChrome.exe worker process could not be found, a short
error message is provided.

By setting this value to one, you can ensure that the full set
of folders which was searched, is reported in this message.

ABCChromeDisableFileCheck

DWORD

0

Before the ABCChrome.exe worker process and dependent files are
loaded, a quick sanity check is done to ensure they are correct. If
the files appear to be different from the ones expected then an
error will be raised.

Part of this check involves signature validation, which requires
the establishment of a chain of trust, which may require internet
access - something that may not be easily on all setups.

By setting this value to one, you can disable this file check.
Be cautious about doing this as, to do so, invites the possibility
of loading files which are wrong and may produce crashes or unusual
behavior.

ABCChromeLogSeverity

DWORD

0

ABCChrome defaults to a sensible tolerance level. It will not
report errors if it thinks that the web page has not been affected
by them.

By setting this property you can make it more sensitive and less
tolerant. This may help in diagnosing subtle network and
permissions issues.

The possible values are:

0 - Default

1 - Verbose

2 - Info

3 - Warning

4 - Errors

In general you will want the Info level. The verbose level
provides more information but can be overly intrusive and can
disrupt multi-threaded operation.

You should not use anything other than zero while in production
use.

Rendering

Name

Type

Default

Overridable

Description

RenderNoBitmap

DWORD

0 [false]

SetInfo only

This parameter allows low-level control over the way that
documents are rendered to vector formats like EMF and EPS.

During the generation of an EMF or EPS file, bitmap generation
due to transparency detection will be suppressed. This can cause
some unexpected results as neither EMF nor EPS format supports
transparency and non-default blending modes to the extent that PDF
does.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

RenderNoDisplayList

DWORD

0 [false]

SetInfo only

This parameter allows low-level control over the way that
documents are rendered to bitmap outputs.

During the generation of a high-resolution or scene-antialiased
bitmap, the renderer stores PDF rendering objects in a display
list. The bitmap is broken into sections and the display list is
rendered to each section.

For some very complex PDF files, this display list can become
rather large and consume a lot of memory. In these cases, it is
better to allocate a complete image and render the PDF objects
directly to the image than it is to try and store the individual
PDF objects.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

RenderTextAsText

DWORD

1 [true]

SetInfo only

This parameter allows low-level control over the way that text
is rendered into vector formats like EPS.

If the value is true, the text is placed directly into the
output file when possible. If it is false, the text is converted to
vectors, which are then output to the file.

The former method results in smaller files. The latter results
in larger but font-independent output files. It is important to
note that not everything that looks like text is actually text or
can be extracted as text.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

RenderEmfType

DWORD

1

SetInfo only

This parameter allows low-level control over the way that
documents are rendered to EMF.

This setting controls the type of EMF output. Possible values
are:

0 - EmfOnly

1 - EmfPlusOnly

2 - EmfPlusDual.

You may want to change the setting to EmfPlusDual, which means
that both EMF and EMF+ entries are included in the output. This
produces greater compatibility but at the cost of a doubling in
file size.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

RenderInstallFonts

DWORD

0

This registry key allows you to control the installation of
embedded fonts when rendering to EMF.

By default, when you use Rendering.GetData to render to EMF,
fonts will be installed in memory and will remain available to the
ABCpdf process until Doc.Clear is called. This means that the EMF
can be spooled to a printer and the fonts will appear
correctly.

By default, when you use Rendering.Save to render to EMF,
embedded fonts are not installed and text will be rendered as
polygons for any fonts that are not available on the system. This
is because when an EMF file is viewed outside the ABCpdf process,
memory-resident fonts are not available. Thus any text using those
fonts would be subject to font substitution by Windows.

Set this value to 0xFFFFFFFF to disable the installation of
embedded fonts in memory, even when calling Rendering.GetData. This
results in text rendered with polygons for embedded fonts. Hence,
the rendering is slower and the output is bigger.

Set this value to 1 to always install fonts, even when calling
Rendering.Save. This results in faster rendering and smaller
outputs. However, viewing emf files outside the ABCpdf process may
not display embedded fonts correctly.

RenderAlwaysInstallFonts

DWORD

1

This registry key allows you to selectively control the
installation of embedded fonts when rendering to EMF.

Assuming that RenderInstallFonts is set appropriately, embedded
fonts will be installed in memory. However many embedded fonts are
subsets of standard system fonts. Referencing the copy which exists
in the fonts folder provides two advantages. The first is that the
amount of memory used is reduced. However, more importantly,
subsetting can occasionally result in a font which looks viable to
Acrobat but not to Windows. In this case using the embedded font
can result in unreliable text output.

When this value is set to 1 embedded fonts will always be
installed. If it is set to 0 then only those fonts that do not
appear to have an analog in the fonts folder will be installed.

RenderBypassDeviceIcc

DWORD

0

Some PDFs contain color profiles which do not
handle black objects correctly.

This option allows you to bypass the profile
transformation if the input colorspace is CMYK ICC and the output
is device CMYK, or if the input is Gray ICC based and the output is
device CMYK.

EmfDeviceName

STRING

""

SetInfo only

When an EMF is created the standard settings are taken from the
default screen.

Under some circumstances it can be desirable to allow these
settings to be taken from a different screen or indeed a device
such as a printer.

This property allows you to specify the name of the device to be
used for the default EMF settings.

This property is only accessible using the Doc.SetInfo method.
The default cannot be overridden using a registry key.

RenderResizeupThreshold

DWORD

600000000

Maximum number of bytes used to resize up an image. When
rendering to a high resolution output image, internal pdf images
will get resized using the normal resizing methods. It the target
(temporary) image exceeds this threshold, we will use a sampling
algorithm to place the image in the output image.

ColorConvertWHighPrecision

DWORD

0

Disabled by default. Set to 1 to enable. Converting color spaces
using ICC profiles and high precision can take extra processing
time, especially for embedded images, however it may be necessary
for certain applications or 16 bit output.

RenderUseAVXExtension

DWORD

1

Enabled by default if processor supports the advanced vector
instructions (AVX). Set to 0 if you do not wish to use these
instructions.

RenderUseFontHints

DWORD

0

Disabled by default unless rendering is 1 bit per sample. When
rendering to anti-aliased continuous tone images, the glyphs appear
nicer when the glyph is not drawn hinted. Set this to 1 to enable
font glyph hinting.

RenderAdjustSubGlyphMat

DWORD

1 [true]

When fonts are not embedded in the pdf, we look for a suitable
external font. Occasionally the chosen external font's glyph
metrics don't match the metrics specified by the pdf, so we
compromise by mapping the width of an external glyph to it's
corresponding width as specified in the source pdf. Set to 0 if you
don't want this mapping to occur.

RenderCurveFlatness

STRING

"1"

When rendering stroked curves, the curve is broken into a series
of line segments. The flatness value is the default value for this
tesselation, default is '1' which means that when the curve has
deviated by 1 pixel, it is broken into a line segment. Note that
even though its registry representation is type 'STRING', it will
be converted into a DOUBLE numerical value.

RenderHalftoneGamma

STRING

"1"

When creating a 1 bit per pixel image, some images may come out
too light or too dark. This value allows you to customize the
general tone of the image. The greater the value, the darker the
resulting image. (Enter a value between .01 and 10), 2 is a good
value to start for darkening.

XPS/HTML Export

Name

Type

Default

Overridable

Description

XPSExportWMPImages

DWORD

1 [true]

This hint flag controls ABCpdf policy regarding the use of
Windows
Media Photo (WMP/JPEG XR) images in converted XPS documents. If
this flag is set, ABCpdf would prefer to use WMP over PNG in some
situations.

WMP is a versatile format that can handle lossless and lossy
compression as well as transparency. It can often reduce the file
size of produced XPS documents.

However, some compact .NET runtime environments, such as
Silverlight, do not support decoding WMP images. If your XPS
documents need to be used in those environments, you may want to
turn this flag off.

Images in color-spaces such as CMYK must always be represented
as WMP in XPS documents. As such, if you wish to ensure that your
documents never use WMP, they must be converted to RGB or Grayscale
before export.

XpsAny Import

Name

Type

Default

Overridable

Description

PrintHookLog

DWORD or STRING

0

registry only

Set this value to 1 to enable the logging of the PrintHook
library using %SystemRoot%\Temp or set it to a path to
a folder to enable the logging using that folder.

The PrintHook library is used to print files to XPS, which are
then converted to PDF in ImportAny operations. We may ask you to
enable the logging and send us the log files for debugging purposes
if you request us to solve related problems.

Log files are named spy_<PID>.txt.

On 64-bit machines, you will need to set this value in the
32-bit registry section (Wow6432Node) as well for intercepting
32-bit processes.

PrintHookShow

DWORD

0

Set this value to 1 for viewing applications that are launched
by Operations.ImportAny(), typically Office applications. Set it to
0 or remove it to hide them.

We use Office applications to print their documents to XPS
files, which we then convert to PDF. Sometimes these applications
get stuck on pop-ups of various types, so it may be useful to see
what they are doing.

Please note that there are limitations with this feature—it may
not be possible to view applications that run under a different
user account. This is normally the case when running Office
Applications in a web server process.

MSOffice Import

Name

Type

Default

Overridable

Description

MSOfficeShow

DWORD

0 [false]

Setting this to true will cause
MSOffice application windows to be displayed when using the
MSOffice read module. This can be useful for troubleshooting
purposes.

PreferDCOMLaunch

DWORD

0 [false]

This is a setting for the MSOffice read module.

Set to true to prefer using Windows' DCOMLaunch service to
create MSOffice application processes. This is mainly needed for
using the MSOffice read module in Classic ASP. Please refer to our
support page for more instructions to prepare the system for the
MSOffice read module in Classic ASP.

WordGlue Import

Name

Type

Default

Overridable

Description

WordGlueAssemblyPath

STRING

""

If WordGlue .NET is installed, then ABCpdf will use it for
importing DOC and DOCX content.

ABCpdf will look in standard locations for WordGlue. However, if
you have WordGlue installed in an unusual location, you may wish to
let ABCpdf know where to look using this setting.

Postscript (EPS) Import

Name

Type

Default

Overridable

Description

EPSDoSeparations

DWORD

1

This applies to the processing of Separation and DeviceN
colorspaces. When EPS is converted to PDF, by default we try to
keep the original colorspaces.

However, there may be instances where the Separation or DeviceN
colorspace causes problems. Set to '0' to force the interpreter to
use the equivalent alternate colorspace.

EPSUseDistillerOps

DWORD

1

There are special postscript operators that Distiller supplies
to help specially written postscript files convert to pdf (namely
'pdfmark'). Setting this value to '0' disables those operators.

EPSDeviceScale

STRING

"100"

Some Postscript or EPS files may look for a device resolution
and attempt to optimize the placement of certain object based on
that assumed resolution. This can cause problems when converting to
PDF, which is resolution independent. Since both EPS and PDF use
'points' as the default resolution, it can appear to a postscript
program that the resolution is 72 dots per inch (1 point is 1/72 of
an inch). This setting allows one to make the output device (PDF)
appear to be any resolution, and the default value of '100' makes
the pdf output device appear to the postscript program to be a
device with 7200 dots per inch (72 * 100). Making the output device
appear as a higher resolution device limits the effect of some
postscript functions such as the 'snap_to_device' function that
some AI postscript output files may incorporate.