5

ABCpdf.netコンポーネントを使用してHTMLをPDFに変換しています。一部のHTMLは、Symbolフォントを使用して特定の文字を表示します。残念ながら、サードパーティからHTMLを使用しているため、変更することはできません。

私の開発環境ではフォントが正しく表示されますが、本番環境では表示されません。フォントがインストールされていても、インストールされていないかのように動作します。実稼働環境のInternetExplorerで同じHTMLをレンダリングすると、問題なく表示されます。

フォントを.eotとして埋め込み、ヘッダーに@font-faceスタイルを提供してみました。TheDoc.AddFont('Symbol')を使用してみました。助言がありますか?

製品:ABCpdf .NET 7 x64

本番OS:Windows Server 2003 x64、IE8

開発OS:Win7 x64、IE8

4

3 に答える 3

6

WebSuperGoo サポート チームは、フォント関連の HtmlOptions を設定するという修正で対応しました。これらのオプションを設定すると、問題が修正されました。わーい!

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.

編集:以下のコメントで述べたように、トリックを行ったオプションは FontProtection = false でした。

于 2011-09-23T02:48:07.307 に答える
2

Doc.HtmlOptionsが答えだと言いましたが、それはまったく別のものであることがわかりました。フォントの太さが正常ではなかった(つまり、太字だった)ため、記号は表示されませんでした。これらの文字を含む太字のサブセットはありません。IEは太字の部分を無視するのに十分賢いですが、PDFはかなり気難しいです。キャラクターが見つからないので、何も表示されません。

実際の解決策は、HTMLをくまなく調べて、すべての記号がで囲まれていることを確認することでしspanfont-weight: normal !important。おそらくあまり洗練されていない解決策ですが、効果的です。それでもランダムに表示を拒否した唯一の記号は、角度記号(∠)です。このために、私はそれを画像に置き換えました。なぜ表示されないのか、まだわかりません。

于 2012-01-20T00:05:15.887 に答える
2

サーバーを再起動してみてください。

ABCPdf のフォントで同様の問題が発生しました。フォントは明らかにインストールされていますが、何らかの理由で、マシンを再起動するまで ABDPdf はフォントを取得しませんでした。

同じことを達成するための再起動しない方法があるかもしれませんが、それには問題が何であるかを理解する必要があります! 簡単な場合は、再起動してみてください。

于 2011-09-22T20:48:47.577 に答える