Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symbol font on ABCpdf

Tags:

c#

asp.net

abcpdf

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

like image 983
samiz Avatar asked Sep 22 '11 20:09

samiz


2 Answers

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 with font-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.

like image 153
samiz Avatar answered Oct 21 '22 00:10

samiz


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.

like image 2
Jonny Cundall Avatar answered Oct 21 '22 01:10

Jonny Cundall