Our Datalogics Knowledge Base page is maintained by our Developer Support Team, and is used to provide solutions to frequently asked questions to others who may be having similar issues. I recently wrote a KB article about an error reported for Adobe PDF Print Engine (PPE), and since it is one of our more common errors we get asked about, I wanted to share the solution with this audience as well.
The NON-FATAL PDF Exception: Cannot extract the embedded font Error
A full text of the error would appear similar to the one below with the name of the problem font in the brackets:
JDFPrintProcessor ERROR: Job 1 processing completed: Failed ACR ERROR: 26, Error interpreting PDF page File: ......sourceacrpdfdocIImpPDFDocHdl.cpp Line: #### The runlist element information for the erroneous placed object is: Filename: "file:///C:/Monza/APPE3.0-Win64/JDFSamples/ExampleInputFiles/xxxx.pdf" Page No.: # NON-FATAL PDFL Exception: Cannot extract the embedded font ['font name']. Some characters may not display or print correctly.
The simple explanation of the error is that that it is caused by bad font data. If the Adobe Common Renderer (ACR) encounters bad font data, it reports an error and fails the job.
Users started noticing this NON-FATAL PDFL Exception with PPE v3.0 and higher and for good reason. Older versions of PPE (v2.x or lower) were not able to catch NON-FATAL errors, allowing some jobs with problem fonts to process without raising an exception. This can result in problems with how the text looks in the output image file.
To correct this issue, Adobe added enhanced error handling to catch and report bad font data errors, starting with PPE v3.0 and higher. The stricter controls resulted in a lot of jobs that previously worked in PPE v2.x and lower to all of a sudden fail with a NON-FATAL PDF Exception: Cannot extract the embedded font ... error.
From the frequency of reported cases with regards to this error, I know firsthand that many PPE users have asked "how do I get pass this error?" The correct answer is to go back to source and fix the issue with the font, but that's not what many want to hear. Fear not, there are a couple of option settings available but requires the ACR parameter object:
This controls ACR's behavior when a nonfatal error occurs during PDF interpretation. If present, this parameter specifies which nonfatal errors should be suppressed. The parameter value is an ACR array of Unicode strings. There are two values that apply to this error:
IgnoreAll - ignore all NON-FATAL errors
ApplyBestEffortForFont - Try to work around bad font data. If successful, generate incorrect output in place of bad font; otherwise, fail the job.
PPE users can find more information about the ACRSuppressibleErrorHandling parameter under the "Errors in PDF Interpretation" section of the "Building a Product with Adobe PDF Print Engine" documentation PDF.
If you have run into this issue, know that you are not alone. We are happy that Adobe has provided a workaround to get past this issue. If you need additional support, I encourage you to visit our Knowledge Base, or reach out to our Support Team.