When converting a Word document to PDF using Qoppa’s PDF library jOfficeConvert, sometimes a font specified in the Word document may not be available on the machine. See our matching logic to identify a matching font. jOfficeConvert will then use the fallback font if one was set.

Fallback Font Error

You will see an error reading:

Error embedding font for Arial, 1
Fallback font not specified

You will see this error only when the option to embed fonts is set to true (this is the default option).

Choosing not to set a fallback font

If the fidelity of converted PDF documents is very important to you, then you will want to leave the fallback font unset (or set to null). This ensures that jOfficeConvert will throw a WordException for any font that cannot be found. You can then make sure to review the documents that fail and install any missing fonts when they are not available on the machine (making sure that the fonts are embeddable) or change the fonts in the original Word documents with fonts that are present on the machine.

Choosing to set a fallback font

If you are dealing with pretty standard Word documents and are more concerned about the successful conversion of the documents, you should set a fallback font.

How to Choose a FallBack Font

The perfect fallback font will contain every character for every world language script.

DroidSansFallbackFull Font  has characters for most (but not all) scripts. jOfficeConvert Sample / Demo application includes this font. SansDroid is released under the Apache 2.0 license. When running in an application, you can ship with this font. When running on a well-known server, you can install this font on the machine.

Code2000 Font contains a very wide range of characters and can be found on the Internet for download.

Using Operating System Fonts

You can also decide to use fonts that are present on your operating system. Windows and OS X operating systems include the Arial Unicode Font which contains characters for more scripts.

Sample code showing how to set a fallback font

On a Windows machine

// Create an object to store the conversion options
WordConvertOptions opts = new WordConvertOptions();
// Suggested Fallback Font for Windows with Microsoft Office
opts.setFallbackFontPath("C:/Windows/Fonts/ARIALUNI.ttf");
// Open a Word document using the conversion options defined above
WordDocument wordDoc = new WordDocument(“mydoc.docx”, opts);

On a Mac OS X machine

// Create an object to store the conversion options
WordConvertOptions opts = new WordConvertOptions();
// Suggested Fallback Font for Mac OS X 
opts.setFallbackFontPath("/Library/Fonts/Arial Unicode.ttf");
// Open a Word document using the conversion options defined above
WordDocument wordDoc = new WordDocument(“mydoc.docx”, opts);

On a Linux machine (or any platform, really)

// Create an object to store the conversion options
WordConvertOptions opts = new WordConvertOptions();
// Suggested Fallback Font for Linux
// packaged with our demo application under the fonts folder
opts.setFallbackFontPath("/fonts/DroidSansFallbackFull.ttf");
// Open a Word document using the conversion options defined above
WordDocument wordDoc = new WordDocument(“mydoc.docx”, opts);

Our sample demo application for jOfficeConvert ships with the Droid Sans font, which can be found under the “fonts” folder under the demo application installation folder. You can copy this font under the “usr/share/fonts/truetype/droid” and make the call above.

Tagged: