Frequently Asked Questions

Can you recommend a good book on XSL-FO?

We recommend this book XSL Formatting Objects Developer's Handbook by Doug Lovell

Do in need to include my Developer License whan I install my application into production?

No. Your license file contains a runtime key which should be used when deploying applications.

Refer to Ibex Runtime Keys for more information.

In XSL-FO how so I repeat a table bottom border on every page when the table is split?

By default a table bottom border appears once at the end of the table and does not appear at the bottom of the first page when the table is split across two pages. To retain the bottom border set border-after-width.conditionality="retain" on the fo:table element. To retain the top border set border-before-width.conditionality="retain" on the fo:table element.

How do I use fonts which are not installed by the end user

See Using fonts which are not installed

Why does border-bottom-width.conditionality="retain" not work?

The properties border-bottom-width and border-after-width are not the same. Both can be used for setting the border width but only border-after-width supports the .conditionality property.

Is Windows versions 7 to 11 supported?

Yes. Any platform running the full (i.e. not Compact) .NET Framework 4.8 or .Net 6.0 or greater is supported.

Is Linux supported ?

Yes. Any Linux system runnng .Net 6.0 or greater is supported.

Is Vista supported?

Yes. Any platform running the full (i.e. not Compact) .NET Framework is supported.

Do you have any programs which convert a PDF file to XML?

We don't have any programs for converting from PDF to XML. The problem is that a PDF is a very low level page description which tells the reader to place some text here or draw a line here, it has no concept of paragraphs, tables, borders or any of the things defined in XML. Its just a collection of x y coordinates and strings or line segments. Adobe supply a plugin for Adobe Acrobat 5 which will save a PDF file as XML, its just basically a dump of the string contents and positioning, you might be able to use XSLT on the results. There is a link at the bottom of the page http://www.adobe.com/products/acrobat/update.html

Do you have any programs which merge data into an existing PDF file?

We don't have any programs for converting from PDF to XML. The problem is that a PDF is a very low level page description which tells the reader to place some text here or draw a line here, it has no concept of paragraphs, tables, borders or any of the things defined in XML. Its just a collection of x y coordinates and strings or line segments. As there is no way of determining that what a table is, it is impossible to effectively split a table over two pages if more data is added than would fit on one page.

If you don't take up your annual maintenance for a period of time, can you rejoin at a later date. Is there any rejoin (or additional) fee as well as the annual fee for maintenance in this situation?

You can rejoin at a later time. No there is no additional fee

What does this message mean: warning: No glyph index found for character code 25B6?

The issue here is that the particular character you want to use is not contained in the font file you are using.

Does Ibex perform internal downsampling of images?

PDF internally stores images as JPEG files or bitmaps.

If the input file is in JPEG format by default no downsampling is done. If it is in another format such as PNG it is converted to a JPEG to reduce size, at JPEG quality 75%.

PDF generated by Ibex is not specifically optimized for screen or print. Using the dpi attribute you can control the resolution of images on a per-image basis. By default we use the dpi value from the image, so the image is not changed unless the dpi attribute is used (on the fo:external-graphic element, see the Ibex manual).

We have customers who generate PDF files at 96dpi for viewing on screen then regenerate them at 1200 or 2400dpi for high quality printing. Of course 2400dpi images result in very large PDF files and display very slowly in Acrobat reader.

Why to I get "Access is Denied" to ibex20.dll?

If you are running Index Server it can lock assemblies in the Temporary ASP.NET Files directory, see http://support.microsoft.com/default.aspx?scid=kb;en-us;329065

Why do I get "Assembly cannot be loaded" or "Assembly was not found" or similar errors?

These kind of errors can be caused by several different things. Here is a list of some things you can retry to resolve this kind of problem.

Getting More Information

The .Net Framework ships with a program for logging errors finding or binding to assemblies. The program is called fuslogvw.exe and looks like this:

For more information see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfFusionLogViewerFuslogvwexe.asp

Using the Global Assembly Cache

The Ibex installation adds ibex10.dll, ibex11.dll and ibexshaping.dll to the GAC. If you install the files onto a server by just copying them, you may want to try running gacutil -i to register them in the GAC.

Dependencies

IbexShaping.dll is dependent on two DLLs namely msvcr71.dll which ships with the .NET runtime, and msvcp71.dll which does not. They should be installed into a directory on your path. Microsoft documents seem to recommend putting them into the application directory (where you install ibexshaping.dll) and adding that directory to the path. Installations after 2.0 will include these files.

Assemblies such as IbexShaping.dll have dependencies on certain DLLs which must be on the path. Running the depends.exe program will show what the dependencies are

This program shows a screen like this listing dependencies in the top left corner:

The depends tool ships with Visual Studio or can be downloaded from http://www.dependencywalker.com/

ASP.NET Paths

ASP.NET will not always load a dependent DLL from the bin directory of the ASP.NET application. Even if the dependent DLL is in the bin directory, ASP.NET may not look for it in that location.

The Filemon tool from www.sysinternals.com can be used to see which files are being loaded from where and to identify which directories are searched for a DLL which cannot be found.

Security Issues

ASP.NET applications usually run as the ASPNET user. By default ASPNET has almost no access to anything including files below the virtual directory used for the ASP.NET application. To give ASPNET read access to your DLL files you usually need to go into explorer and right click on either the file or directory, then use the security tab to grant the ASPNET user access to the directory or file.

The screen should look something like this:

Index Server

Index Server causes problems such as "Permission Denied" on DLLs. See http://support.microsoft.com/default.aspx?scid=kb;en-us;329065 for more information.

Temporary Files

ASP.NET copies assemblies off to temporary directories and can sometimes get itself confused. You can try stopping the w3svc service, removing all temporary files, and restarting the service. Temporary files are stored somewhere like C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files

How do I open a PDF file in a frame?

There is an example of how to do this on the Adobe site http://acroeng.adobe.com/BrowserTestSuite/frameset/frame_main.html

What causes a "Thread was being aborted" exception in ASP.NET.

This exception is not caused by Ibex. It can sometimes be caused by incorrect programming of an ASP.NET page. An example of incorrect code is:

try {
      ....
       // setup PDF creation
       Response.BinaryWrite(pdfStream.ToArray());

       Response.End();
}
catch(Exception ex) {
      Response.Write(ex.Message);
}

The problem here is that calling Response.End terminates the current thread. Any code which occurs after this will not be executed, and will cause a "Thread was being aborted" exception. This includes the "catch" statement, which is code following the Response.End and so causes the exception. The solution is to move the Response.End() call to the very end of the page, like this:

try {
      ....
       // setup PDF creation
       Response.BinaryWrite(pdfStream.ToArray());

}
catch(Exception ex) {
      Response.Write(ex.Message);
}
Response.End();

How can I use Ibex with Visual Basic 6 or ASP?

Ibex version 2.1.17 and later include binaries and source code for a COM wrapper which allows Ibex to be used from VB6 and ASP applications. See the Ibex manual for more information.