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.
The latest version of Ibex works on .Net 6 and 7. 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 nuget.org 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 'test.fo' this command would created a PDF file from it:
> ibex test.fo
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;
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 www.xmlpdf.com" 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.
The following table lists Ibex releases in version number order identifying significant changes or improvements.
[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 https://www.w3.org/TR/SVG/types.html#ColorKeywords
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:
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 184.108.40.206;
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 ߭ 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
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
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
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