Trial versions of Ibex for .Net can be downloaded for evaluation free of charge. Unless a license is purchased versions which are downloaded for evaluation will expire in 30 days.

See also:

goto  Read the latest release notes

goto  Evaluating Ibex

Ibex for .Net 6, .Net 7, .Net 8

The latest version of Ibex works on .Net 6, .Net 7 and .Net 8. This replaces both the versions for .Net Framework 4.x and for .Net Core. This version works on Windows and Linux operating systems.


Ibex is installed as from as two separate components.


The Ibex.PDF.Creator package contains the library which you will link to your own application. This can be downloaded either using the "Manage Nuget Packages" menu option from within Visual Studio or using the "dotnet add package" command on the command line.


The Ibex.CommandLine package is a console application to create PDF files from the command line, for use during testing and development. The Ibex.CommandLine package is a .Net tool. This is installed from a command shell like so:.

> dotnet tool install -g Ibex.CommandLine

An existing installation can be updated using this command:

> dotnet tool update -g Ibex.CommandLine

It can be uninstalled using this command:

> dotnet tool uninstall --global Ibex.CommandLine

The Ibex.CommandLine tool, when it is installed as a dotnet global tool, is accessed using the command "ibex". So for example if we had a file called '' this command would created a PDF file from it:

> ibex

Evaluating Ibex

Users may evaluate the Ibex PDF Creator for a period of 30 days from the date of download after which time a license to continue using the software must be purchased.

Ibex runs in evaluation mode unless either:

  • a Developer License file (called xmlpdf.lic) is located, or;

  • Ibex is being loaded at runtime by an application which you have developed, in which case you can pass Ibex a runtime key (a string) using the setRuntimeKey() API.

License files are issued to users when they purchase the product. No license file is necessary to evaluate the software.

A license is required for each developer with the Ibex PDF Creator installed on their computer. Where multiple developers develop use a shared server a license is required per developer. Where a single developer uses more than one computer only a single license is required. No runtime or server licensing is required.

When running in evaluation mode:

  • the phrase "created with evaluation software from" or similar is printed at the bottom of each page.

  • the software will cease to function after 30 days.

Other than these two things the software functions the same in licensed and evaluation modes.

Release notes

The following table lists Ibex releases in version number order identifying significant changes or improvements.


[Released December 2023]

First release for .Net 8

Adds experimental ibex:text-align-only attribute which works like the text-align property but applies if there is exactly one line in the paragraph

Reduces size of YCbCr jpeg images

Fixes start-align defaulting to "none" instead of "left"

[Released June 2023]

Fixes a problem with listing fonts which did not exist

[Released June 2023]

Adds support for whitelisting fonts for faster loading on Azure

[Released May 2023]

Uses ImageSharp 3.0.1

Added support for Ycck colorspace

Improved support for YCbCr colorspaces

[Released May 2023]

Now supports both .Net 6 and .Net 7

Has experimental support for .Net 8 preview 3

[Released September 2022]

Improves handling of images which use YCbCr color spaces.

Improves the formatting of page numbers based on the "format" attribute of the fo:page-sequence element.

[Released August 2022]

Fixed a problem with SVG curves when a relative smooth curve preceeded another curve in a path element.


[Released March 2022]

Upgraded to .Net 6.0, with this release replacing the .Net Framework and .Net Core prior versions

Changed image file processing from using System.Drawing to using ImageSharp. This change was made because as of .Net 6 some features of System.Drawing are no longer supported on Linux (see .Net 6 Breaking Changes)

Ibex should create the same PDF output on Windows and Linux with the one exception that Arabic text shaping is currently not supported on Linux. This should be resolving using ICU in the near future.


[Released 12 June 2021]

Fixes an issue where some internal links in a PDF were not working in chromium based browsers

Fixes an issue where "disregard-shifts" was not always working


[Released 3 October 2020]

Changes the position of elements which are inside fo:foonote-body elements and have position="absolute" and have a non-zero "top" property. These are now positioned relative to the foonote-reference-area not the page

SVG: corrects the size of text defined using "px" units, which was too small

SVG: trims spurious spaces in "stroke-dasharray" properties which were causing the wrong line pattern to be displayed


[Released 26 September 2020]

Fixes a problem with horizontal alignment of table elements

Adds support for text-anchor in Arabic text within SVG files

Adds support for SVG gradient elements which reference other gradient elements

Reworked font loading so now fonts with English and non-English names can be used with either name


[Released 25 April 2020]

Fixes a problem with image alignment within the content rectangle

Fixes a problem parsing SVG path elements

Fixes a problem which occurs when using a relative 'm' path command as the first instruction in an SVG path


[Released 5 April 2020]

First general release dotnet core version


[Released 2 March 2020]

Change to start-indent processing for better specification conformance

Improved handling for fo:footnotes elements which did not contain a fo:footnote-body element

Added support for odd TrueType fonts which do not have a font name in the name table

Extended locations search for shaping assemblies to support loading them from IIS temporary directories

[Released 7 May 2019]

Added limited support for splitting footnotes which are longer than one page

Added Arabic text support inside SVG images

[Released 24 February 2019]

Improved parsing of SVG path elements

[Released 13 September 2018]

Added more colors like "aliceblue" from

When processing a badly formed jgep Ibex now uses the .net palette to try an determine if it is greyscale

Fixed issue with cell backgrounds obscuring text

Fixed overconstraint issue where widows or orphans settings prevented a block from being split which contained another block with break-after="page"

Fix for Arabic HAMZA character

[Released 3 July 2017]

Added VariableTableReadAheadMultiplier to settings

Adjusted the scoring of list items to use the body if the label is smaller and has not been split

Changed case on doc.loadFontFromMemory

Improved the vertical arrangement of fo:inline-container

Added table-layout=auto for fo:table-and-caption

Suppressed messages like "inside element bookmark-label at line 345 which does not support text" when not in fo namespace

Improved the test for top-of-page after a break

Fixed a null pointer exception when a table had rows but none in the first body

Added support for setting the default printer scaling like this:
<root xmlns="" xmlns:ibex=""> <ibex:viewer-preferences print-scaling="none"/>

Improved support for Arabic diacritics

Fixed a slowdown at end of pdf creation when page count was greater than 100,000

Fixed fill-opacity conflicting with opacity in SVG images

[Released 4 June 2016]

Fixed a problem with the heights of fo:inline-containers

[Released 3 May 2016]

Fixed a problem with font sizes using em units in some regions

[Released 18 March 2016]

Added an attribute to the footnote anchor fo:inline to keep footnote anchors and footnotes bodies on the same page. To keep an anchor and the body on the same page specify ibex:keep-with-body="always" on the anchor fo:inline object

Changed the fo:inline-container to align the text baseline with the baseline of the line the fo:inline-container is on

Image caching is now off by default resulting in lower memory usage when creating documents with hundreds or thousands of images

Remove a spurious usage of Helvetica font when adding id's to objects

[Released 11 November 2015]

Changed the behaviour of table layout when there are no fo:table-column elements

The external-destination and internal-destination properties can now include '(' and ')' characters

The /F flag was added to internal destinations when creating PDF/A files

Image processing now uses a faster .Net API

[Released 29 August 2015]

Fixed a problem where automatic column layout was being confused by number-rows-spanned

Fixed a problem with number-rows-spanned when splitting a row over a page break

For PDF/A-1b added the timezone to the values of /CreationDate and /Moddate and removed milliseconds from the values of xmp:CreateDate and xmp:ModifyDate

[Released 15 April 2015]

Fixed a problem in automatic table layout where cell-width was specified on each cell and the combined cell width was different to the table width

[Released 22 March 2015]

Fixed a problem in automatic table layout when the rows considered in the layout ended part way through a cell which spanned multiple rows

[Released 8 March 2015]

Fixed some problems with keep-with-previous interacting with cells which had rowspan greater than one

Improved image loading when loading files from UNC names

Fixes a problem with Arabic text in repeated table headers

Fixed inheriting margin-right onto the first PCDATA element of an fo:block

[Released 14 January 2015]

Fixed width on fo:table-cell not working when table-width not specified

[Released 11 January 2015]

Fixed incorrectly applying block-progression-dimension.minimum to an fo:table-row which had no complete cells in it, only cells starting or ending in rows above or below;

[Released 20 December 2014]

Fixed a problem where column ordering was sometimes incorrect.

[Released 4 November 2014]

Made improvements to right-to-left table formatting to better support number-columns-spanned.

[Released 27 July 2014]

Fixed the width property not always working on an fo:inline-container

Fixed an issue when content-width and content-height both specified

Changed shaping dlls to cache fonts

Changed widow/orphan to consider line size, so lines which contain very large images are not considered

If an SVG text element has no anchor and the first child tspan element does, use the anchor from the tspan

Disabled incorrect inheritance of baseline-shift

If whitespacecollapse = preserve and whitespacetreatment = preserve don't trim spaces off the end of the line

Fixed the SVG path 'z' operation

Reworked the right to left implementation so if the writing direction = right-to-left columns in multiple-column pages are right-to-left

Fixed what happens when a font-family property contains a font which is not installed

Svg now supports multiple fonts using font-family

Fixed an error parsing svg color properties

[Released 10 February 2014]

Fixed break-before="odd-page" not breaking in the middle of an odd page

Add support for % in colors such as rgb(100%,30%,1%)

Fixed a problem with marker retrival for "document"

Added MaxCharactersFromEntities = 0 to XML reader settings to support large entities

Writes images to disk sooner reducing memory usage in documents with many images

[Released 27 October 2013]

Fixes a problem where a cell may not always be expanded to the full row height when the cell has number-rows-spanned greater than 1 and there is another cell in the row which also has number-rows-spanned greater than 1 and the second cell is taller;

Fixes a problem with footnotes inside tables.

[Released 10 October 2013]

Fixes a problem where last-line-end-indent is ignored when used in conjunction with Chinese text.

[Released 22 September 2013]

Improved support for visiblilty="hidden";

Fixed an issue in SVG using gradientTransform on radialGradient;

If a graphic overflows the region, it is constrained to the region using the region's inline-progression-dimension if it is rotated relative to the region;

A table footer now correctly collapses it's top border with any border specified on the preceding table body.

[Released 30 April 2013]

Fixed an issue with TrueType font files which have more than one kerning subtable;

Fixed an issue with Chinese text not formatting correctly on pages with mutiple columns.

[Released 2 March 2013]

Added support for SVG clip-paths which contain <use> elements;

Improved the placing of destination areas when using id= on an fo:page-sequence element;

Added support for transforms on SVG <rect> nodes;

Made various SVG changes to better support files created by Adobe Illustrator;

Added support for gradientTransform and opacity on SVG linear and radial gradients;

Fixed an issue with fo:basic-link elements which contain an image but no text.

[Released 2 December 2012]

Changing the DPI of CMYK jpeg images is unreliable in .NET so has been disabled;

SVG processing now correctly handles spaces in dash-array values which are immediately after commas;

SVG processing now correctly positions linear gradients when the first stop offset is not zero;

SVG processing now correctly handles specifying both opacity and stroke-opacity on the same element.

[Released 8 September 2012]

Improves the support for different values of gradientUnits on SVG linear and radial gradients.

[Released 1 September 2012]

Image interpolation is disabled for PDF/a and PDF/x files;

Space glyphs are rendered when using TrueType symbol fonts to support barcode fonts which use space characters as significant glyphs;

Fixes a problem with page-position="last" combined with break-before="odd-page";

Fixes a problem with change bars when also using fo:page-number-citation;

Fixes a problem with clip-path in SVG;

Adds support for font-weight="bolder" in SVG;

Adds support for fill-rule="evenodd" in SVG path elements;

Changes the layout of fo:inline-container when then optimum width is not specified, now defaults to the width of the containing element;

Fixes a problem when change bars are used on a page with multiple columns which contains a table which has a repeated header and is also followed by an element with span="all";

[Released 19 May 2012]

Fixed the background on an fo:table-cell being too narrow when the number-columns-spanned was not 1;

Fixed line-height-shift-adjustment changing the operation of baseline-shift;

Fixed source boxes for annotations being too large and leading to clicking the wrong source box and jumping to the wrong destination.

[Released 14 April 2012]

Improves shaping of Arabic text formed from different adjacent fo:inline elements;

Fixed a problem in splitting rows with rowspan > 1;

Fixed a problem escaping text in bookmarks when using a non-unicode font;

Fixed a problem splitting a table with a repeated end border on the fo:table element only;

Disabled a BIDI exception generated for some Japanese text;

Expanded the height of inline start markers which were smaller than line height to be the same as the line height. This corrects a visual problem when using background colors on adjacent fo:inline elements;

Individual DLLs are now digitally signed, previously only the whole installer package was signed.

[Released 18 December 2011]

Changes the font size in svg images when using "pt" units;

Fixes a problem when using pdfa and fo:page-number-citation;

Adds printing the namespace to the unhandled element error message;

Fixes a null pointer caused by the natual language change in;

Changes the interaction of fo:wrapper when inside an fo:inline;

Fixes an issue with inheriting the fill attribute in SVG;

Implements SVG radial gradients;

Adjusts the gradient center point for linear SVG gradients;

Fixes a memory usage error;

Adds support for DOCTYPEs on SVG images loaded from memory;

The decode array for CMYK JPEG images had an additonal number which has now been removed;

Sets the minimum left side bearing on fixed width TrueType fonts which do not have hmtx entries for all glyphs.

[Released 21 July 2011]

Improves the appearance of double leaders;

Fixes an issue when using footnotes and multiple columns;

Reduces memory requirements when using multiple columns;

keep-together is now correctly inherited;

Improved the functionality of fo:character when used in conjunction with suppress-at-line-break="retain";

Changes the process of positioning text on a line to try and keep together text elements which are in adjacent fo:inline elements and are not separated by white space.

Fixes an issue with clipping non-body regions when overflow="hidden" on the region;

Fixes an issue with borders and backgrounds on fo:leader elements.

Corrects a problem which occurs when cells have number-rows-spanned > 1 and there is a large number (~2k+) of cells on the page.

Corrects a problem with roman numerals;

Allow negative space-before on blocks which are the first child of a reference area;

Supports clipping for all block-containers with overflow="hidden". Previously only block-containers which had position="absolute" or position="fixed" supported clipping.

fo:float should now inherit properties from fo:flow and fo:region- not just fo:region-;

Added PDF_VERSION value to FODocument.Settings, this is inserted when creating a PDF/X file and defaults to "PDF/X-3:2002";

Fixed an issue when column widths are calculated from cell widths which are then respecified in the next row.

Fixes a problem which occurs only in Acrobat 7 when using SVG images.

Makes a minor change to table cell rendering so that when the bottom border of a cell is rendered at the same time as the top border of the following cell, this occurs after the contents of the following cell has been rendered;

Fixes a problem relating to using margin="auto auto auto auto".

Retains bold and italic settings when falling back to the default font;

Fixes a problem which occurred when the FO for a footnote was not properly formed;

SVG images with width and height properties set to percentages will try to get these dimensions from the containing fo:external-graphic or fo:instream-foreign-object;

Fixes a problem with missing leaders in Chinese text.

Fixes a null pointer exception.

SVG: Fixes a problem with SVG images in regions where the decimal separator is not '.';

SVG: If the outer <svg> element has width or height properties specified without units (i.e width="300") these are now correctly treated as pixels whereas they were being treated as points. This will affect the size of such images.

A page break on an fo:block inside an fo:inline at the start of a page no longer causes a loop;

Fixes an exception which occurred when using automatic column width calculation on an fo:table which contained an fo:table-and-caption;

Added support for soft hyphens;

SVG: added stop ranges to linear gradients;

SVG: added radial gradient support.

Processing of CSS styles in svg images is improved.

The body and label of a list item will be displayed with the label to the right of the body when the writing direction is right to left;

baseline-shift is now supported in SVG images;

XML namespaces declared at the start of an FO file are now inherited by inline SVG images;

Empty fo:wrapper elements with id attributes are again supported.

Fixed an issue with mutiple threads when a compiled XSL transform was reused.

Adds support for underlining svg text

Fixed an issue with backgrounds on mixed English and Arabic text in fo:inline elements. Currently the use of borders on fo:inline elements on lines which contains mixed left to right and right to left text is not supported.

Added line number information when line height exceeds region height

Fixed an issue when the same image was used in svg:image and fo:external-graphic

Fixes an issue where transparency works in Acrobat 9.x but not in 10.x;

Changed text-align='.' to align lines with no '.' as if they had a trailing '.';

Fixed a image offset problem where an svg image used more than one svg:image element;

Fixed a problem with control codes appearing in SVG text;

Fixed a problem where transparent backgrounds where not working correctly.

SVG: added support for text-anchor="end";

SVG: added the transform property to the path element;

SVG: added text normalisation;

When an fo:block had text-indent the indent should not apply after the block is split by a page break.

Changed pixels per inch from 90 to 96 for consistency with other formatters. We recommend that you never use pixels as units but instead use pt, in, cm etc;

Changed the HTML color "darkgrey" from rgb(64,64,64) to rgb(192,192,192);

Fixed a problem matching color expressions like rgb(192,192,192);

Changed the default size of an SVG image from 600x600pts to w=425 h=538 or 15cmx19xm;

Changed to new SVG engine;

Fixed a problem where margin values were conflicting with inherited start-indent values.

Fixes a problem with collapsed cell borders not being repeated at page breaks

Made inline start markers use the BIDI type of the preceeding letter so that background colors and borders on fo:inline elements behave better when the inline contains mixed Arabic and English text.

Improved the processing of non-spacing marks in Arabic text

Changed the justification code to consider lines ending in linefeeds

Fixed a problem splitting a table with variable headers when the first row was larger than page the size

Changed line spacing to enforce line-height being the minimum line height regardless of leading

Fixed an endless loop caused by having keep-with-next="always" and break-before="always" at the same place in the document

Fixed a problem with the use of < in strings in svg images

Fixed a problem where a space after an fo:inline was sometimes suppressed

Fixed a problem with number-columns-spanned when writing-mode was right to left

Fixed the size of the after region being calculated from precedence setting for the before region

Fixed a problem with layout when an fo:block-container had a top property which was larger than the containing region height

Fixed a problem on .NET 4.0 with SVG images which had embedded DTD references

Recoded inline support

Added new assemblies compiled with .NET 4.0, see the Installation chapter of the manual for specific details

If the Unicode paragraph separator &#2029; is used this is treated as a line break

Fixed display-align="after" sometimes overwriting space from space-after

Fixed incorrect placement of annotation click box for rotated annotations

Fixed a problem where start-ident was not correctly inherited through reference areas and deleted Settings.InheritIndentsThroughReferenceAreas

fo:list-item-label and fo:list-item-body no longer generate areas so don't have a border or background

Fixed a problem loading CMYK images on Windows 7 where the images load correctly on Windows XP

Fixed a problem when using page breaks on table rows and on the block immediately after the table

Fixed fo:basic-link not working correctly if the fo:basic-link contained an fo:block

Fixed scientific notation values from SVG being copied to the PDF file (error 110)

Improved the parsing of complex expressions

Added the Flags value to PDF/A files

Improved column balancing code

Fixed the overstrike color used to create bold text from normal fonts always being black

Fixed promoting a break-after property from a child to its parent and deleting it when the parent has not been fully loaded

Implemented text-align="."

Added a progress callback function, described here

Modified the layout of cells which have height specified regarding whether this implies keep-together.

Fixed a conflict if z-index and overflow were used together on block container

Fixed a problem with escaped XML inside XML in PDF/A files

Fixed a problem with precedence on before and after regions

Fixed a problem with table headers and Bidirectional text

Fixed a problem with space-start and -end on inline elements

Corrected the behaviour of the width attribute on fo:block elements (it should be ignored)

Fixed a licensing problem using Turkish regional settings

Fixed a crash when using a corrupted TrueType font file

Fixed a problem formatting a table which has a header but no rows

Fixed a problem with space-after on an fo:block

Improved the behaviour of keeps across span reference areas

Changed the size of SVG images to be correct

If block-progression-dimension.optimium and .maxiumum are specified on a block container and content height is greater than block-progression-dimension.optiumum and block-progression-dimension.maxiumum is greater than block-progression-dimension.optimum then block-progression-dimension.maxiumum will be used

Improves memory use for large files (more than 40,000 pages)

Added reporting on overflowing fo:block-containers

Improved performance

Fixed a problem with colorspaces in PDF/A files

Improved balancing of content in two columns when the page is not filled

Improved border appearance when border-collapse="collapse" is used

Remove transparency support from the PDF if no transparent images were used

Changed proportional-width() to support non-integer values

Fixed a problem with Arabic text if Arabic and English words were not separated by spaces

Added support for TrueType collection files

Improved handling of Unicode characters in Type 1 fonts

Improved handling of Unicode characters > 0x20000

Improved implementation of border-style="double"


Adds C# and COM examples to the installer


Fixed keep-with-previous on fo:table-row not working in some circumstances

Fixed a problem with footnotes when used in conjunction with page-position="last"

Fixed an issue with retrieved markers affecting the borders on tables


Fixed an problem recalculating table column widths when splitting a table over pages which had a different number of columns

Added normalization to the XML text reader

Changed whitespace-collapse so it will now not remove a single space at start of line if whitespace-treatment="preserve"

Fixed a problem where an image inside an fo:inline with no specified size was getting zero width

Fixed splitting an inline element which contained a block level element which had break-before set

Made column-number a calculated value, so column-number="12-2" now works

Fixed a problem with borders and backgrounds on inline elements


Fixed a problem with padding at the bottom of the page

Fixed a problem with all text not appearing if a static content region was too small

Corrected a problem with clipping in block-container

Fixed missing bottom border on rowspan greater than 1 cell at end of table

Fixed a problem with position="relative"

Stopped the height attribute having any effect where it is not allowed by the specification, such as on an fo:block element

Fixed a problem when combining text-align="justify" and text-indent

Fixed a problem with ibex:custom elements

Implemented index-page-citation-list-separator and index-page-citation-range-separator


Improved image sizing functionality

Improved rotation support

Changed SVG code to work if using a DTD and not connected to internet

Changed BIDI formatting to fill more of paragraph width


Improved support for from-parent()

Added the image file name to image exception messages

Added support for in-memory SVG images

Added PDF/A-1b support

Added the viewer-preferences element as described in the manual

Added 128 bit encryption

Fixed various minor bugs relating to image sizing, rotation and absolute positioning.

Fixed an issue with vertial-align="middle" when aligning images


Fixed a problem with break-after on last element


Fixed a problem with floats aligned horizontally


Removed period compression at end of line if wrap-option="no-wrap"

Fixed a problem with wrapper element inheritance failing after a number of pages

Fixed link to root element in bookmarks

Fixed problem with page-position="last" after page-position="rest"

Fixed bug in splitting a list block

Fixed an issue with PDF/Sigq compliance

Added Arabic support

Fixed a problem with <ibex:security> not working

Fixed using exponents like M -2.3848177e-016,953.74872 in SVG


Fixed an exception in automatic table layout with list items

Fixed a problem with using non-bold Type 1 fonts with font-weight="bold"

Added support for maximum-repeats on repeatable-page-master-alternatives


Fixed a problem with cumulative rotation

Fixed a problem with letter spacing

Fixed a null pointer exception using list items

Changed the rendering of borders to use lines rather than shapes to look better in Acrobat 8.x


Fixes an issue where using table-and-caption was using too much memory

Adds additional attributes to the ibex:mask element to support color masking in CMYK images


Fixed a problem with rendering backgrounds over cell contents

Added an sRGB color profile to all non PDF/X PDF files. This is required to correct text colors which were becoming bolder when a transparent image was used

Fixes a bug with text-align="outside"

Fixed absolute-position="fixed" to be from the page viewport area, not the page reference area, so margins on the page are not considered


Improved conformance for floats stacking horizontally


Fixed hanging on badly formed footnote

Fixed too-wide dashed borders when number-columns-spanned > 1

Changed Settings.LeaderDotSpacing from 1.6 to 1.0 to make does closer together in leaders

Fixed a problem with space-start and -end on leaders

Fixed centering of text followed by spaces

Fixed float=inside/outside problems


Added support for float="inside" and float="outside"

Fixed some issues with rotated content

Fixed non-repetition of table headers and footers with multiple columns

Ibex for .Net 4.8

The last release of Ibex for .Net 4.8 (from April 2021) can be downloaded here

This is the last release of Ibex for .Net 4.x and is intended only for testing; no new versions of Ibex will be released for .Net 4.8, all future releases will be for .Net 6 or above.

We do not recommend deploying this release in production unless you will be shortly moving to .Net 6 or above.

Copyright (c) 2002-2023 Visual Programming Limited