Node.jsを使用したスプレッドシートのレンダリング用フォントの構成例 C++経由

可能な使用シナリオ

Aspose.Cells APIは、スプレッドシートを画像形式でレンダリングしたり、PDFやXPS形式に変換したりする機能を提供します。変換の精度を最大化するためには、スプレッドシートで使用されるフォントがOSの標準フォントディレクトリに存在する必要があります。必要なフォントがない場合、Aspose.Cells APIは利用可能なフォントに置き換えようとします。

フォントの選択

Aspose.Cells API が裏で行うプロセスは以下の通りです。

  1. API は、スプレッドシートで使用されている正確なフォント名と一致するフォントをファイルシステムで検索しようとします。
  2. API が正確な同じ名前のフォントを見つけられない場合、ワークブックの DefaultStyle.getFont() プロパティで指定されたデフォルトフォントを使用しようとします。
  3. API がワークブックの DefaultStyle.getFont() プロパティで定義されたフォントを見つけられない場合、PdfSaveOptions.getDefaultFont() または ImageOrPrintOptions.getDefaultFont() プロパティで指定されたフォントを使用しようとします。
  4. API が PdfSaveOptions.getDefaultFont() または ImageOrPrintOptions.getDefaultFont() プロパティで定義されたフォントを見つけられない場合、FontConfigs.getDefaultFontName() プロパティで指定されたフォントを使用しようとします。
  5. API が FontConfigs.getDefaultFontName() プロパティで定義されたフォントを見つけられない場合、利用可能なすべてのフォントから最適なフォントを選択しようとします。
  6. 最終的に API がファイルシステムでフォントを見つけられない場合、Arial を使用してスプレッドシートをレンダリングします。

カスタムフォントフォルダの設定

Aspose.Cells APIは、必要なフォントが存在しない場合の代替フォントの指定も可能です。ユーザーはフォント名のリストを用意して、元々必要だったフォントの代わりに指定できます。このために、Aspose.Cells APIはFontConfigsメソッドを公開しており、これは2つのパラメータを受け取ります。最初のパラメータはstring型で、置換するフォント名を指定します。2つ目のパラメータはstring型の配列で、元のフォントの代わりに使用するフォント名のリストを提供します。

1.FontConfigs.setFontFolder(string, boolean): このメソッドは1つのフォルダだけを設定する場合に有用です。 1.**FontConfigs.setFontFolders(string[], boolean)**: このメソッドは、フォントが複数のフォルダに存在し、ユーザーがすべてのフォルダを単一のフォルダにまとめるのではなく、それぞれ別々に設定したい場合に有用です。 1.**FontConfigs.setFontSources(FontSourceBase[])**: このメカニズムは、ユーザーが複数のフォルダからフォントを読み込む場合や、単一のフォントファイルやバイト配列からフォントデータを読み込みたい場合に有用です。

const AsposeCells = require("aspose.cells.node");
const path = require("path");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");

// Defining string variables to store paths to font folders & font file
const fontFolder1 = path.join(dataDir, "Arial");
const fontFolder2 = path.join(dataDir, "Calibri");
const fontFile = path.join(dataDir, "arial.ttf"); 

// Setting first font folder with SetFontFolder method
// Second parameter directs the API to search the subfolders for font files
AsposeCells.FontConfigs.setFontFolder(fontFolder1, true);

// Setting both font folders with SetFontFolders method
// Second parameter prohibits the API to search the subfolders for font files
AsposeCells.FontConfigs.setFontFolders([fontFolder1, fontFolder2], false);

// Defining FolderFontSource
const sourceFolder = new AsposeCells.FolderFontSource(fontFolder1, false);

// Defining FileFontSource
const sourceFile = new AsposeCells.FileFontSource(fontFile);

// Defining MemoryFontSource
const sourceMemory = new AsposeCells.MemoryFontSource(require("fs").readFileSync(fontFile));

// Setting font sources
AsposeCells.FontConfigs.setFontSources([sourceFolder, sourceFile, sourceMemory]);

フォントの代替メカニズム

Aspose.Cells API は、変換時に必要なフォントが利用できない場合に備えて、代替フォントを指定する機能も提供しています。ユーザーは、オリジナルのフォントの代わりに使用可能なフォント名のリストを指定できます。このために、Aspose.Cells API では **FontConfigs.setFontSubstitutes(string, string[])** メソッドを公開しており、2つのパラメータを受け取ります。最初のパラメータは string 型で、代替フォントの名前を指定します。二つ目のパラメータは string の配列で、代替フォント名のリストを提供します。

以下は単純な使用シナリオです。

const AsposeCells = require("aspose.cells.node");
const path = require("path");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
const filePath = path.join(dataDir, "sample.xlsx");
// Loads the workbook which contains hidden external links
const workbook = new AsposeCells.Workbook(filePath);

// Substituting the Arial font with Times New Roman & Calibri
AsposeCells.FontConfigs.setFontSubstitutes("Arial", ["Times New Roman", "Calibri"]);

情報収集

上記の方法に加え、Aspose.Cells APIは設定されたソースと置換に関する情報を収集する手段も提供しています。

  1. FontConfigs.getFontSources()メソッドは、指定されたフォントソースのリストを含むFontSourceBase型の配列を返します。ソースが設定されていない場合、FontConfigs.getFontSources()メソッドは空の配列を返します。
  2. FontConfigs.getFontSubstitutes(string)メソッドは、置換が設定されているフォント名を指定できるstring型のパラメータを受け取ります。指定されたフォントに対して置換が設定されていない場合、FontConfigs.getFontSubstitutes(string)メソッドはnullを返します。

高度なトピック