Configurar fuentes para renderizar hojas de cálculo con Node.js a través de C++
Escenarios de uso posibles
Las APIs de Aspose.Cells ofrecen la facilidad de renderizar las hojas de cálculo en formatos de imagen así como convertirlas a formatos PDF y XPS. Para maximizar la fidelidad de conversión, es necesario que las fuentes usadas en la hoja de cálculo estén disponibles en el directorio de fuentes predeterminado del sistema operativo. En caso de que las fuentes requeridas no estén presentes, las APIs de Aspose.Cells intentarán sustituir las fuentes requeridas por otras disponibles.
Selección de Fuentes
A continuación se presenta el proceso que las API de Aspose.Cells siguen detrás de escena.
- La API intenta encontrar las fuentes en el sistema de archivos que coincidan con el nombre de fuente exacto utilizado en la hoja de cálculo.
- Si la API no puede encontrar las fuentes con el nombre exacto, intenta utilizar la fuente predeterminada especificada en la propiedad DefaultStyle.getFont() del libro de trabajo.
- Si la API no puede localizar la fuente definida en la propiedad DefaultStyle.getFont() del libro de trabajo, intenta usar la fuente especificada en la propiedad PdfSaveOptions.getDefaultFont() o ImageOrPrintOptions.getDefaultFont().
- Si la API no puede localizar la fuente definida en las propiedades PdfSaveOptions.getDefaultFont() o ImageOrPrintOptions.getDefaultFont(), intenta usar la fuente especificada en la propiedad FontConfigs.getDefaultFontName().
- Si la API no puede localizar la fuente definida en la propiedad FontConfigs.getDefaultFontName(), intenta seleccionar las fuentes más adecuadas de todas las fuentes disponibles.
- Por último, si la API no puede encontrar ninguna fuente en el sistema de archivos, representa la hoja de cálculo utilizando Arial.
Establecer Carpetas de Fuentes Personalizadas
Las APIs de Aspose.Cells buscan en el directorio de fuentes predeterminado del sistema operativo las fuentes requeridas. En caso de que las fuentes necesarias no estén disponibles en el directorio de fuentes del sistema, las APIs buscarán en los directorios personalizados (definidos por el usuario). La clase FontConfigs ha expuesto varias formas de establecer directorios personalizados de fuentes, detalladas a continuación.
- FontConfigs.setFontFolder(string, boolean): Este método es útil si solo hay una carpeta que se va a establecer.
- **FontConfigs.setFontFolders(string[], boolean)**: Este método es útil cuando las fuentes residen en varias carpetas y el usuario desea establecer todas las carpetas por separado en lugar de combinar todas las fuentes en una sola carpeta.
- **FontConfigs.setFontSources(FontSourceBase[])**: Este mecanismo es útil cuando el usuario desea cargar fuentes desde varias carpetas o un solo archivo de fuente o datos de fuente de un array de bytes.
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]);
Mecanismo de Sustitución de Fuentes
Las APIs de Aspose.Cells también brindan la capacidad de especificar la fuente de sustitución para fines de renderizado. Este mecanismo es útil cuando una fuente requerida no está disponible en la máquina donde se realiza la conversión. Los usuarios pueden proporcionar una lista de nombres de fuentes como alternativa a la fuente originalmente requerida. Para lograr esto, las APIs de Aspose.Cells han exponido el método **FontConfigs.setFontSubstitutes(string, string[])**, que acepta 2 parámetros. El primer parámetro es de tipo string, que debe ser el nombre de la fuente a sustituir. El segundo parámetro es un arreglo de tipo string, donde los usuarios pueden proporcionar una lista de nombres de fuentes como sustitución del nombre de fuente original (especificado en el primer parámetro).
Aquí hay un escenario de uso simple.
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"]);
Recopilación de información
Además de los métodos mencionados anteriormente, las APIs de Aspose.Cells también proporcionan medios para recopilar información sobre qué fuentes y sustituciones se han establecido.
- El método FontConfigs.getFontSources() devuelve un arreglo de tipo FontSourceBase que contiene la lista de fuentes especificadas. En caso de que no se hayan establecido fuentes, el método FontConfigs.getFontSources() devolverá un arreglo vacío.
- El método FontConfigs.getFontSubstitutes(string) acepta un parámetro de tipo string, permitiendo especificar el nombre de la fuente para la cual se ha establecido una sustitución. En caso de que no se haya establecido una sustitución para la fuente especificada, el método FontConfigs.getFontSubstitutes(string) devolverá null.