HTML to PDF / DOCX / RTF Java converter library › Forums › PD4ML v3 Archived Forums (Read Only) › General questions / FAQ › PD4ML cannot access Times New Roman Font
- This topic has 8 replies, 3 voices, and was last updated Sep 18, 2017
11:18:12 byPD4ML.
-
AuthorPosts
-
August 30, 2017 at 08:39#27162
Hi,
We are facing a very strange behavior with PD4ML and JBOSS App server in our production environment. We are using custom fonts embedded within a jar file which is part of the app war deployable.
We have configured the below fonts in the pd4fonts.properties which is called by the java class using pd4ml.useTTF(“java:defaultfonts”, true);
Arial=arial.ttf Arial Bold=arialbd.ttf Arial Bold Italic=arialbi.ttf Arial Italic=ariali.ttf Courier New=cour.ttf Courier New Bold=courbd.ttf Courier New Bold Italic=courbi.ttf Courier New Italic=couri.ttf Times New Roman=times.ttf Times New Roman Bold=timesbd.ttf Times New Roman Bold Italic=timesbi.ttf Times New Roman Italic=timesi.ttf Calibri Bold=calibribd.ttf Calibri=calibri.ttf Calibri Italic=Calibrii.ttf MingLiU=mingliu.ttc_0 Gill Sans=GillSansMT.ttf Gill Sans Bold=GillSansMTBold.ttf Gill Sans Bold Italic=GillSansMTBoldItalic.ttf Gill Sans Italic=GillSansMTItalic.ttf Gill Sans Light=GillSansMTLight.ttf Gill Sans Semi Bold=GillSans-SemiBold.ttf Gill Sans Condensed=GillSansMT-condensed.ttf AdobeSongStd=AdobeSongStd.ttf SharpSong=SharpSong.ttf
The issue is that we are seeing, in Production the fonts in the PDF generated are switching to AdobeSongStd.ttf instead of times.ttf. Once we restart the jboss by clearing the cache files (tmp and work folders in unix) the times.ttf is being used again which is the expected fonts. After a few random days, the fonts are going back to AdobeSongStd. Every time the jboss is restarted the fonts switch back to times.ttf.
I can see that Jboss is extracting these jar files having the fonts on to the tmp cache folder and I am assuming it then uses the fonts from there. However we are not able to understand why jboss/pd4ml is not using the times.ttf font and why it is using AdobeSongStd.ttf file instead. Also we do not know why the times.ttf is fetched properly when we do a jboss restart after clearing cache.
Can anyone please help me on this?
September 6, 2017 at 11:13#30085Hi Team,
Can you please help us on this issue? I have been looking at the issue posted at the below link and our issue somewhat resembles the one posted here.
But we still cannot figure out why restarting the JBOSS server brings the fonts back to Times New Roman.
html-css-to-pdf-rendering-issues-f3/issue-with-font-family-on-chinese-characters-t921.html
September 6, 2017 at 11:27#30086What does it print (to STDOUT or server’s log) if you switch debug mode on with pd4ml.enableDebugInfo()?
September 6, 2017 at 12:13#30087Unfortunately since this is a PROD system, we do not have an option to do a enableDebugInfo() and cannot replicate the same in Dev or UAT
We have 3 servers with the same war file deployed and we see that this issue does not happen with all the 3 servers at the same time.
Can you please let us know if Jboss extracts the PD4ML font files from the war to any temp files?
Also why PD4ML is not fetching times font even though it is available and also why it is happening only sometimes and restarting jboss resolves it?
September 11, 2017 at 11:51#30088PD4ML Support Any help on this problem?
We restarted the JBOSS in all 3 PROD servers on Thursday and this problem has surfaced in only the 3rd server today.
September 11, 2017 at 12:03#30089I suspect the issue is caused by font caching. Could you perform two experiments: disable caching (1) and clear cache after each conversion (2) as described in the thread:
pdf-generation-troubleshooting-f4/pd4ml-cache-enable-false-t539.html
Does #1 or #2 help?
September 13, 2017 at 20:01#30090I am afraid, both these options cannot be done since it is a PRD environment and we do not have access.
Can you please let us know how does pd4ML embed the fonts into the PDF. Does it store the fonts files into temp folders some where on the linux server or does it load it into RAM memory and then tries to fetch it from there?
The reason I ask is because, the issue PDF shows the Times Roman and Times Bold but does not say it as EMBEDDED when i look at the Document Properties option in Acrobat Reader DC. But the non-issue reports has these fonts as embedded.Can too much of traffic or any memory leaks cause these issues with PD4ML?
September 14, 2017 at 09:53September 18, 2017 at 11:18#30092> Does it store the fonts files into temp folders some where on the linux server or does it load it into RAM memory and then tries to fetch it from there?
PD4ML loads the resources via the class loader:
URL url = Thread.currentThread().getContextClassLoader().getResource(resourcePath); if (url == null) { url = ClassResourceProvider.class.getClassLoader().getResource(resourcePath); } if (url == null) { ClassLoader cl = callingClass.getClassLoader(); if (cl != null) { url = cl.getResource(resourcePath); } }In some environments the above code does not work as expected. For example when the resource JAR is placed to WAR, EAR etc the classloader may fail with a TTF load. Usually appserver configuration adjustment (something like “unpack JARs to work directory”) helps.
-
AuthorPosts
The forum ‘General questions / FAQ’ is closed to new topics and replies.
