I'm using the ABCpdf.net component to convert HTML to PDF. Some of the HTML uses the Symbol font to display certain characters. Unfortunately, we are consuming the HTML from a third-party, and it cannot be changed.
My development environment displays the font correctly, but my production environment will not. It acts as though the font is not installed, even though it is. If I render the same HTML in Internet Explorer on the production environment, it displays just fine.
I have tried embedding the font as an .eot and providing a @font-face style in the header. I have tried using TheDoc.AddFont('Symbol'). Any suggestions?
Product: ABCpdf .NET 7 x64
Production OS: Windows Server 2003 x64, IE8
Development OS: Win7 x64, IE8
Although I said that the Doc.HtmlOptions was the answer, it turned out that it was something else entirely. The symbols did not show up because the font-weight was not normal (i.e., it was bold). There is no bold subset that contains these characters. IE is smart enough to ignore the bold part, but PDF is rather finicky. It cannot find the character, so it just shows nothing.
The real solution was to comb through the HTML and ensure that all symbols were surrounded by a
span
withfont-weight: normal !important
. It is perhaps a less elegant solution, but it is effective. The only symbol that still randomly refused to show up is the angle symbol (∠
). For this, I replaced it with an image. I still can't figure out why it won't appear.The WebSuperGoo support team responded with the fix: setting font-related HtmlOptions. I set these options, and it fixed the issue. Yay!
Edit: As I mention in the comment below, the option that did the trick was FontProtection = false.
Try restarting the server.
I've had a similar issue with fonts on ABCPdf. Although the fonts were clearly installed, for some reason, ABDPdf didn't pick them up until the machine has been restarted.
There may be some non restart way of achieving the same thing, but that would entail understanding what the problem is! If it's easy, just try restarting.