Aspose-cells-python でのフォント置換方法を知りたい

aspose-cells-python の 24.9.0 を利用しています
こちらのドキュメントを確認しましたが、フォント置換に関する記載を見つけることができませんでした
見落としていたらすみませんが、実装方法をお教えいただけますと幸いです

@rmffr,

フォントの構成方法の例が記載されたドキュメントを参照してください。

さらに、フォントの構成方法、カスタム フォント フォルダーの設定方法、Excel スプレッドシートを画像または PDF にレンダリングする際のフォントの置換方法については、ドキュメント (.NET ですが、ご自身で簡単に Python に変換できます) を参照してください。

@rmffr
申し訳ありませんが、現在python-net関連のフォント置換ドキュメントは追加されていません。できるだけ早く関連ドキュメントを追加します。.NET下の関連ドキュメントを見ることができます。

python netの下の関連APIは、次のAPIドキュメントを参照してください。

https://reference.aspose.com/cells/python-net/aspose.cells/fontconfigs/

関連するAPIの説明を参照してください。
set_font_folderset_font_foldersset_font_sourcesset_font_substitutes

ありがとうございます
このように実装してみましたが、今のところ期待結果が得られていません
試行錯誤中ではありますが、現時点での記載間違いなどありましたがご教授いただければ幸いです

import aspose.cells as ac
from aspose.cells import License, Workbook, SaveFormat


try:
    license = License()
    license.set_license("hogehoge")
except Exception as ex:
    print(str(ex))

font_configs = ac.FontConfigs()

# フォントの読み込み先の設定
font_configs.set_font_folder("./fonts/", True)

# フォント置換の設定
original_font_name = "MS Gothic"
substitute_font_names = ["IPAGothic"]
font_configs.set_font_substitutes(original_font_name, substitute_font_names)

workbook = Workbook("./files/source/sample_xlsx.xlsx")
workbook.save("./files/converted/xlsx.pdf", SaveFormat.PDF)

@rmffr
サンプルファイルsample _ xlsx.xlsxとフォントフォルダを提供してくれませんか。zip形式に圧縮してここにアップロードすることができますので、すぐにチェックします。

容量が大きかったためファイル共有サービスを介させていただきます
sample.zip というファイルになります

@rmffr
次のサンプルコードと提供されたサンプルファイルを使用して最新バージョンv 24.12でテストすることで、サンプルコードを正常に実行することができます。何の異常もありません。添付ファイルを確認してください。sample_xlsx_out.zip (134.0 KB)

import aspose.cells as ac
from aspose.cells import License, Workbook, SaveFormat, CellsHelper

print(CellsHelper.get_version())
font_configs = ac.FontConfigs()

# フォントの読み込み先の設定
font_configs.set_font_folder("E:\\PythonWorkspace\\fonts\\fonts\\", True)

# フォント置換の設定
original_font_name = "MS Gothic"
substitute_font_names = ["IPAGothic"]
font_configs.set_font_substitutes(original_font_name, substitute_font_names)

workbook = Workbook("sample_xlsx.xlsx")
workbook.save("sample_xlsx_out.pdf", SaveFormat.PDF)

また、フォント置換は、元のファイルで使用しているフォントがインストールされていないか、フォントがテキストを表示できない場合にのみ行われます。

すみません、私の環境では変換できませんでした
WSL 上の Docker コンテナで実行しています
参考にファイルを添付しますので、お手数をおかけしますがご確認お願いします
先と同じ方法でファイルを共有します ( sample.zip )

> $ wsl.exe --version
WSL バージョン: 2.3.26.0
カーネル バージョン: 5.15.167.4-1
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.19045.5247

@rmffr ,

現在、対応するフォント ファイルが利用できない場合、フォントのローカル名 (例: 「MS ゴシック」) をフォントの英語名 (例: 「MS Gothic」) にマッピングすることはできません。これは確かに、set_font_substitutes API の original_font_name パラメータの問題です。これについてはチケットをログに記録します。

現在のバージョン 24.12 での使用では、ソース ファイルで使用されるフォント名として original_font_name を使用してください。

import aspose.cells as ac
from aspose.cells import License, Workbook, SaveFormat


try:
    license = License()
    license.set_license("hogehoge")
except Exception as ex:
    print(str(ex))

# フォントの読み込み先の設定
ac.FontConfigs.set_font_folder("./fonts/", True)

# フォント置換の設定
original_font_name = "MS ゴシック"
substitute_font_names = ["IPAGothic"]
ac.FontConfigs.set_font_substitutes(original_font_name, substitute_font_names)

workbook = Workbook("./files/source/sample_xlsx.xlsx")
workbook.save("./files/converted/xlsx.pdf", SaveFormat.PDF)

@rmffr

社内の問題追跡システムで次の新しいチケットを開き、Free Support Policies に記載されている条件に従って修正を提供します。

問題 ID: CELLSPYTHONNET-241

優先的にサポートが必要な場合は、Paid Support Services を取得して、有料サポート管理チームに直接アクセスすることもできます。

default_font_name の設定はどうすればよいでしょうか?

@rmffr ,

ソース ファイルで設定されているフォントが使用できず、フォントの代替が設定されていないか失敗した場合、Aspose.Cells はワークブックの DefaultStyle.fontPdfSaveOptions.default_font、および FontConfigs.default_font_name を順に試します。ユーザー側でインストールされているか使用可能なプロパティ フォント (ローカル名と英語名のどちらも OK) を設定できます。

フォントの代替ルールが設定されてないフォントについて、デフォルトフォントで置換するように設定したいです
その場合は default_font_name にフォント名を設定すればよいでしょうか?
FontConfigs.default_font_name="some_font_name" としてみましたが、 read-only とのことで設定できませんでした

@rmffr
デフォルトのフォントを設定するには、次の方法を使用します。

FontConfigs.set_default_font_name("MS Gothic")

ありがとうございます
期待通りの結果を得ることができました

@rmffr
あなたのフィードバックに感謝します。どういたしまして。何か質問があれば、いつでも連絡してください。