Cambia il carattere solo sui caratteri Unicode specifici durante il salvataggio in PDF con Node.js tramite C++

Esempio

Lo screenshot seguente confronta i due file PDF generati dal codice di esempio qui sotto.

Uno viene generato senza impostare la proprietà PdfSaveOptions.isFontSubstitutionCharGranularity e l’altro dopo aver impostato la proprietà su true.

Come si può vedere nel primo PDF, il font dell’intera frase è cambiato da Times New Roman a Arial Unicode MS a causa dell’en dash non break. Nel secondo PDF, solo il font dell’en dash non break è cambiato.

Primo file Pdf
todo:image_alt_text
Secondo file Pdf
todo:image_alt_text

Codice di Esempio

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

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

// Create workbook object
const workbook = new AsposeCells.Workbook();

// Access the first worksheet
const worksheet = workbook.getWorksheets().get(0);

// Access cells
const cell1 = worksheet.getCells().get("A1");
const cell2 = worksheet.getCells().get("B1");

// Set the styles of both cells to Times New Roman
let style = cell1.getStyle();
style.getFont().setName("Times New Roman");
cell1.setStyle(style);
cell2.setStyle(style);

// Put the values inside the cell
cell1.putValue("Hello without Non-Breaking Hyphen");
cell2.putValue("Hello" + String.fromCharCode(8209) + " with Non-Breaking Hyphen");

// Autofit the columns
worksheet.autoFitColumns();

// Save to Pdf without setting PdfSaveOptions.IsFontSubstitutionCharGranularity
workbook.save(path.join(dataDir, "SampleOutput_out.pdf"));

// Save to Pdf after setting PdfSaveOptions.IsFontSubstitutionCharGranularity to true
const opts = new AsposeCells.PdfSaveOptions();
opts.setIsFontSubstitutionCharGranularity(true);
workbook.save(path.join(dataDir, "SampleOutput2_out.pdf"), opts);