Symbol font on ABCpdf

2019-02-17 21:29发布

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

3条回答
兄弟一词,经得起流年.
2楼-- · 2019-02-17 21:34

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.

查看更多
做自己的国王
3楼-- · 2019-02-17 21:36

The WebSuperGoo support team responded with the fix: setting font-related HtmlOptions. I set these options, and it fixed the issue. Yay!

If you want to embed the fonts used in a web page/HTML you need to use:
    Doc.HtmlOptions.FontEmbed = True
You may also need to set
    Doc.HtmlOptions.FontSubstitute = False
and possibly:
    Doc.HtmlOptions.FontProtection = False
before you use the Doc.AddImageUrl or Doc.AddImageHtml methods.

Edit: As I mention in the comment below, the option that did the trick was FontProtection = false.

查看更多
Fickle 薄情
4楼-- · 2019-02-17 21:58

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.

查看更多
登录 后发表回答