Free Support Forum - aspose.com

フォントフォルダの限定方法

.NET Versionで 以下のJava Versionと同等の機能はありますか?
C:\Windows\Fontsを除外することができません。

System.setProperty(“Aspose.Cells.FontDirExc”, “fontExclusiveFolder”)

@HiroA,
次の機能を試して、フィードバックを共有してください。
FontConfigs.SetFontFolder("C:/temp/fonts", true);

ConsoleApp1.zip (9.4 MB)
image.png (87.7 KB)

ProcessMonitorで確認するとC:\Windows\Fonts\配下のフォントを読込している。
時間が2~3秒かかっている。読込時間を短縮したい。
https://docs.microsoft.com/ja-jp/sysinternals/downloads/procmon

@HiroA,
調査のため、データベースに「CELLSNET-47223」として問題を記録しました。 一度、ニュースをお知らせします。このトピックで更新します。

@HiroA,

問題をさらに評価しました。
Aspose.Cellsは、フォルダー「C:\ Windows \ Fonts \」にフォント情報を収集し、キャッシュします。ただし、FontConfigs.SetFontFolderのようなAPIを使用すると、キャッシュがクリアされ、フォルダー「C:\ Windows \ Fonts \」内のフォント情報が毎回再収集されます。フォントディレクトリは1つのブックにのみ設定でき、「C:\ Windows \ Fonts \」のキャッシュされたフォント情報はクリアされません。サンプルコードセグメントを参照してください。

IndividualFontConfigs individualFontConfigs = new IndividualFontConfigs();
//set font folder used only for this workbook.
individualFontConfigs.SetFontFolder(YourFontDir, true);

LoadOptions loadOptions = new LoadOptions();
loadOptions.FontConfigs = individualFontConfigs;

Workbook wb = new Workbook(srcFile, loadOptions);

したがって、プロセスを開始し、個々のスレッドのすべてのワークブックに対して上記のコードを使用して変換を行うことができます。「C:\ Windows \ Fonts \」のフォントは一度だけ読み込まれます。

これが少し役立つことを願っています。

指定フォルダのみのフォントを使用する指定は不可能ということが理解できました。

作成しているプログラムはマルチスレッドではなくマルチプロセスになっています。
EXCELからPDFへ変換する前にプロセスを起動し、完了するとプロセス終了します。
(具体的にはEXEを起動する)

よって頂いたサンプルでは解決できませんでした。
ありがとうございました。

@HiroA,
情報を共有していただきありがとうございます。チケットに記録しましたので、すぐに分析してフィードバックを提供します。

@HiroA,
フォルダ「C:\ Windows \ Fonts \」内のフォントを減らすことを試みることができます。ロード時間を短縮するために使用されていないか、めったに使用されていないフォントを削除します。

C:\Windows\FontsにはWindowsに標準でインストールされているフォントのみ配置されています。
削除を行うとWindowsの動作に問題が出る可能性があるので削除は行うことができません。

@HiroA,
フィードバックをお寄せいただきありがとうございます。 フィードバックをすぐに共有します。

@HiroA,

.Net System.Drawing APIのフォルダー「C:\ Windows \ Fonts \」にインストールされているフォントを使用しないことは不可能または非常に難しいことをご存知かもしれません。さらに、変換を行うための新しいプロセスを開始すると、フォルダー「C:\ Windows \ Fonts \」内のフォントがロードされます。この場合、時間を節約できません

了解しました。
フォント情報は一度環境構築すると変化することは、ほとんどありません。
以下の案で対応できないでしょうか?

1.フォントキャッシュをシリアライズしてファイルあるいはRedis等に保存します。
2.ファイルあるいはRedis等から読込し、デシリアライズしてキャッシュとして利用可能にする。

@HiroA,

提案をありがとう。

評価してみましょう。すぐにご連絡いたします。

@HiroA,

私たちはあなたの提案の実現可能性と可能性を評価しています。また、「C:\ Windows \ Fonts \」フォルダ内のフォントを除外する可能性を再調査します。

ニュースがあればお知らせします。

厳密に調査を実施したところ、データベースの接続(postgresql)およびRedisの接続速度が遅いことがわかりました。Windowsではipv6が優先されてしまうための影響のようです。これらを改善しました。

全体的なレスポンスとして許容できる範囲になりましたので、ご連絡いたします。

@HiroA,

更新していただきありがとうございます。

あなたはそれをあなたの側である程度組織化または改善したようです。 また、進行状況がある場合にも通知されます(ID「CELLSNET-47223」でデータベースにすでにログインしているため)。