フォント指定について

Linux環境下において、ExcelからPDF変換時、
Linuxサーバー上にインストールしたフォントの指定は可能でしょうか?

まずはWindows上でのテストを検討しており、
サンプルコードの提供がございましたらお願いします。

@kenable811

Excel を PDF に変換しているようですが、この機能は Aspose.Cells によって提供されています。このお問い合わせを Aspose.Cells カテゴリに移動し、適切にサポートさせていただきます。

@kenable811,

はい、可能です。 参考として、フォントの設定方法の例と詳細が記載されたドキュメントを参照してください。
https://docs.aspose.com/cells/net/configuring-fonts-for-rendering-spreadsheets/

@amjad.sahi

ありがとうございます。

string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

上記コードの部分は「RunExamples」の箇所が名前空間が存在しないというエラーが発生しています。解決策はありますか?
また、このメソッドでLinuxサーバー内にインストールしたフォルダを取得することは可能ですか?

@kenable811
このサンプルコードはデータディレクトリを取得することであり、自分の実際の状況に応じてdataDirの値を設定することができます。
Linuxのフォントはデフォルトで指定された場所にインストールされますので、次のコードを参照してフォントフォルダを設定してください。

FontConfigs.SetFontFolder("/usr/share/fonts", true);
FontConfigs.SetFontFolder("/usr/local/share/fonts", true);

@John.He
フォルダ指定はできました。

これをPDF出力時に適用させたいのですが、うまくいきません。
PDF出力までのサンプルコードをいただけますか?

@kenable811,

フォント構成の推奨コード行は、画像レンダリングと Excel スプレッドセットからの PDF レンダリングの両方で機能します。 プログラムの開始時、および Aspose.Cells の他の API を使用する前に、推奨される行を使用してください。

それでも問題が見つかる場合は、入力 Excel ファイルと出力 PDF ファイルを参照用に提供してください。 すぐに問題を確認させていただきます。

@kenable811
ファイルをロードする前にフォントディレクトリを設定することをお勧めします。以下のコードを参照してください。

FontConfigs.SetFontFolder("/usr/share/fonts", true);
FontConfigs.SetFontFolder("/usr/local/share/fonts", true);

Workbook book = new Workbook(filePath + "sample.xlsx");            

PdfSaveOptions saveOptions = new PdfSaveOptions();            
book.Save(filePath + "out.pdf", saveOptions);

@John.He

サンプルコードありがとうございます。
まず、Windows 環境でテストをしています。
しかし、上記の通り試してみてもExcelで使用されているフォントでPDF変換され、
指定されたフォントが適用されません。

環境としては用意されたExcelを読み込み、PDF出力を行います。
シート内のフォントを全て変更したいですが、元々Excel内の文字に設定されたフォントで出力されてしまいます。

@kenable811,

フォントを変更する必要がある場合は、コードでスプレッドシート内のセルのフォントを変更する必要があります (Font Settings|Documentation)。 フォントを置き換えることはできますが、それらのフォントが指定されたフォルダーにあることを確認し、コードを設定する必要があります。 フォント置換メカニズムに関するドキュメントを参照してください。
https://docs.aspose.com/cells/net/configuring-fonts-for-rendering-spreadsheets/#font-substitution-mechanism

すみません。よくわかりません。

セル内のフォントを変更し、その後置換メソッドを処理すればよいのですか?
一連の流れをサンプルコードにしてもらえますか?

@kenable811,

フォント置換メカニズムは、基礎となるフォントがインストールされておらず、使用可能なフォントに変更する必要がある場合に使用されます。 希望のフォントがシステムにインストールされている場合は、セルの書式設定を使用してワークシート内のセルのスタイルを変更する必要があります。

完全な参照のために、前の返信で共有された両方のトピックをお読みください。

@asad.ali
ありがとうございます。

またフォント指定はせず、 Aspose Cells のAPIにより自動でフォント決定する機能のテストもしています。Linuxサーバー側ではIPAフォントをインストールしました。読み込んだExcelはゴシック体が使われていますが、明朝で出力されてしまいました。
これらの解決策はやはりフォント指定する以外ないのでしょうか?

@kenable811
必要なフォントをインストールしてフォルダを指定することで、データを正しく表示することができます。必要なフォントをインストールできない場合は、フォントの代替を指定することで問題を解決することもできます。現在、フォント問題を解決するためにサポートされているのはこの2つの方法だけです。

@John.He
承知しました。
フォント指定の場合、ブック全体に対して一括で設定できる方法はありますか?

@kenable811
FontConfigs.SetFontFolderで設定されたフォントフォルダとFontConfigs.setFontSubstitutiesで設定されたフォント置換方法は、ワークブック全体に適用されます。

@John.He
ありがとうございます。フォント置換方法の第一引数と第二引数のフォント名はどこで設定するのですか?

例えば、"MS Pゴシック"とした場合、マシン上からこの名前で自動で検索するAPIがあるのでしょうか?

@kenable811
Aspose.Cellsはフォント代替メカニズムを提供します。現在のフォントを置き換えるフォントを指定する必要があります。最初のパラメータは代替が必要なフォントで、2番目のパラメータは代替フォントです。
たとえば、次のフォント代替文:

// Times New RomanとCalibriフォントをArialフォントの代わりに使用します。
FontConfigs.SetFontSubstitutes("Arial", new string[] { "Times New Roman", "Calibri" });

@John.He
第一引数の"Arial"をMS Pゴシックにしたい場合、どういう名称にすればいいのですか?
“MS-P Gothic” でしょうか?どこの名称を元に設定しているのか知りたいです。

@kenable811

英語名 MS PGothic または日本語名 (Excel で表示されるとおり) MS Pゴシック を使用できます。

FontConfigs.SetFontSubstitutes("MS PGothic", new string[] { "Font1", "Font2" });

または

FontConfigs.SetFontSubstitutes("MS Pゴシック", new string[] { "Font1", "Font2" });